import path from 'path'; import { Page } from 'puppeteer'; import { getPort, launchApp, killApp, modernBuild, modernStart, } from '../../../utils/modernTestUtils'; import 'isomorphic-fetch'; declare const page: Page; describe('server config in dev', () => { let port = 8080; const SSR_PAGE = 'ssr'; const BASE_PAGE = 'base'; const host = `http://localhost`; const prefix = '/bff-api'; const appPath = path.resolve(__dirname, '../'); let app: any; beforeAll(async () => { jest.setTimeout(1000 * 60 * 2); port = await getPort(); app = await launchApp(appPath, port, { cwd: appPath, }); }); test('basic usage', async () => { await page.goto(`${host}:${port}/${BASE_PAGE}`); const text1 = await page.$eval('.hello', el => el.textContent); expect(text1).toBe('bff-express'); await new Promise(resolve => setTimeout(resolve, 300)); const text2 = await page.$eval('.hello', el => el.textContent); expect(text2).toBe('Hello Modern.js'); }); test('basic usage with ssr', async () => { await page.goto(`${host}:${port}/${SSR_PAGE}`); const text1 = await page.$eval('.hello', el => el.textContent); expect(text1).toBe('Hello Modern.js'); }); test('support _app.ts', async () => { const res = await fetch(`${host}:${port}${prefix}/foo`); const text = await res.text(); expect(text).toBe('foo'); }); afterAll(async () => { await killApp(app); }); }); describe('server config in prod', () => { let port = 8080; const SSR_PAGE = 'ssr'; const BASE_PAGE = 'base'; const host = `http://localhost`; const prefix = '/bff-api'; const appPath = path.resolve(__dirname, '../'); let app: any; beforeAll(async () => { port = await getPort(); await modernBuild(appPath, [], { cwd: appPath, }); app = await modernStart(appPath, port, { cwd: appPath, }); }); test('basic usage', async () => { await page.goto(`${host}:${port}/${BASE_PAGE}`); const text1 = await page.$eval('.hello', el => el.textContent); expect(text1).toBe('bff-express'); await new Promise(resolve => setTimeout(resolve, 300)); const text2 = await page.$eval('.hello', el => el.textContent); expect(text2).toBe('Hello Modern.js'); }); test('basic usage with ssr', async () => { await page.goto(`${host}:${port}/${SSR_PAGE}`); const text1 = await page.$eval('.hello', el => el.textContent); expect(text1).toBe('Hello Modern.js'); }); test('support _app.ts', async () => { const res = await fetch(`${host}:${port}${prefix}/foo`); const text = await res.text(); expect(text).toBe('foo'); }); afterAll(async () => { await killApp(app); }); });