utquidem
Version:
The meta-framework suite designed from scratch for frontend-focused modern web development.
103 lines (87 loc) • 2.73 kB
text/typescript
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);
});
});