2022-04-07 16:41:17 +08:00
|
|
|
import { expect, test, describe, afterAll } from 'vitest';
|
2022-03-28 18:04:44 +08:00
|
|
|
import * as path from 'path';
|
|
|
|
import * as fs from 'fs';
|
|
|
|
import { fileURLToPath } from 'url';
|
2022-03-03 15:58:29 +08:00
|
|
|
import { buildFixture, setupBrowser } from '../utils/build';
|
|
|
|
import { startFixture, setupStartBrowser } from '../utils/start';
|
|
|
|
import { Page } from '../utils/browser';
|
|
|
|
|
2022-03-28 18:04:44 +08:00
|
|
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
2022-04-29 16:16:00 +08:00
|
|
|
const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
|
2022-03-28 18:04:44 +08:00
|
|
|
|
2022-03-03 15:58:29 +08:00
|
|
|
const example = 'basic-project';
|
|
|
|
|
2022-03-23 14:01:55 +08:00
|
|
|
describe(`build ${example}`, () => {
|
|
|
|
let page: Page = null;
|
|
|
|
let browser = null;
|
|
|
|
|
|
|
|
test('open /', async () => {
|
2022-04-07 16:41:17 +08:00
|
|
|
await buildFixture(example);
|
2022-03-23 14:01:55 +08:00
|
|
|
const res = await setupBrowser({ example });
|
2022-04-29 16:16:00 +08:00
|
|
|
|
2022-03-23 14:01:55 +08:00
|
|
|
page = res.page;
|
|
|
|
browser = res.browser;
|
2022-03-23 14:22:08 +08:00
|
|
|
expect(await page.$$text('h2')).toStrictEqual(['Home Page']);
|
2022-04-14 21:13:10 +08:00
|
|
|
const bundleContent = fs.readFileSync(path.join(__dirname, `../../examples/${example}/build/js/main.js`), 'utf-8');
|
2022-03-28 18:04:44 +08:00
|
|
|
expect(bundleContent.includes('__REMOVED__')).toBe(false);
|
2022-04-14 21:13:10 +08:00
|
|
|
expect(bundleContent.includes('__LOG__')).toBe(false);
|
|
|
|
expect(bundleContent.includes('__WARN__')).toBe(false);
|
|
|
|
expect(bundleContent.includes('__ERROR__')).toBe(true);
|
2022-04-07 16:41:17 +08:00
|
|
|
}, 120000);
|
2022-03-23 14:01:55 +08:00
|
|
|
|
|
|
|
afterAll(async () => {
|
|
|
|
await browser.close();
|
|
|
|
});
|
|
|
|
});
|
2022-03-03 15:58:29 +08:00
|
|
|
|
|
|
|
describe(`start ${example}`, () => {
|
|
|
|
let page: Page = null;
|
|
|
|
let browser = null;
|
|
|
|
|
|
|
|
test('setup devServer', async () => {
|
|
|
|
const { devServer, port } = await startFixture(example);
|
|
|
|
const res = await setupStartBrowser({ server: devServer, port });
|
|
|
|
page = res.page;
|
|
|
|
browser = res.browser;
|
|
|
|
expect(await page.$$text('h2')).toStrictEqual(['Home Page']);
|
|
|
|
}, 120000);
|
|
|
|
|
2022-04-14 20:50:32 +08:00
|
|
|
test('should update config during client routing', async () => {
|
2022-04-11 10:38:04 +08:00
|
|
|
const { devServer, port } = await startFixture(example);
|
|
|
|
const res = await setupStartBrowser({ server: devServer, port });
|
|
|
|
page = res.page;
|
|
|
|
browser = res.browser;
|
|
|
|
|
|
|
|
expect(
|
|
|
|
await page.title()
|
|
|
|
).toBe('Home');
|
|
|
|
|
|
|
|
expect(
|
|
|
|
await page.$$attr('meta[name="theme-color"]', 'content')
|
|
|
|
).toStrictEqual(['#000']);
|
|
|
|
|
|
|
|
await page.click('a[href="/about"]');
|
|
|
|
await page.waitForNetworkIdle();
|
|
|
|
|
|
|
|
expect(
|
|
|
|
await page.title()
|
|
|
|
).toBe('About');
|
|
|
|
|
|
|
|
expect(
|
|
|
|
await page.$$attr('meta[name="theme-color"]', 'content')
|
|
|
|
).toStrictEqual(['#eee']);
|
|
|
|
|
|
|
|
expect(
|
|
|
|
await page.$$eval('link[href*="bootstrap"]', (els) => els.length)
|
|
|
|
).toBe(1);
|
|
|
|
|
|
|
|
expect(
|
|
|
|
await page.$$eval('script[src*="lodash"]', (els) => els.length)
|
|
|
|
).toBe(1);
|
|
|
|
}, 120000);
|
|
|
|
|
2022-03-03 15:58:29 +08:00
|
|
|
afterAll(async () => {
|
|
|
|
await browser.close();
|
|
|
|
});
|
|
|
|
});
|