From cb8a494ff732ec3b78cfa64687e83b6c626fa72d Mon Sep 17 00:00:00 2001 From: yoho Date: Tue, 17 Jan 2023 14:38:55 +0800 Subject: [PATCH 01/13] feat: support relative path in html report --- packages/ui/client/global-setup.ts | 3 ++- packages/ui/client/shim.d.ts | 2 +- packages/ui/vite.config.ts | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/ui/client/global-setup.ts b/packages/ui/client/global-setup.ts index 4058316558c0..68ce9f29445a 100644 --- a/packages/ui/client/global-setup.ts +++ b/packages/ui/client/global-setup.ts @@ -3,6 +3,7 @@ import { createRouter as _createRouter, createWebHistory } from 'vue-router' import FloatingVue, { VTooltip } from 'floating-vue' import routes from 'virtual:generated-pages' +import { isReport } from '~/composables/client' import 'd3-graph-controller/default.css' import 'splitpanes/dist/splitpanes.css' import '@unocss/reset/tailwind.css' @@ -20,7 +21,7 @@ FloatingVue.options.instantMove = true FloatingVue.options.distance = 10 export const createRouter = () => _createRouter({ - history: createWebHistory(import.meta.env.BASE_URL), + history: createWebHistory(isReport ? import.meta.env.BASE_URL : __BASE_PATH__), routes, }) diff --git a/packages/ui/client/shim.d.ts b/packages/ui/client/shim.d.ts index 95c082d89812..a98bf7b9b743 100644 --- a/packages/ui/client/shim.d.ts +++ b/packages/ui/client/shim.d.ts @@ -8,7 +8,7 @@ declare module '*.vue' { export default component } -const __REPORT__: boolean +const __BASE_PATH__: string declare interface Window { METADATA_PATH?: string diff --git a/packages/ui/vite.config.ts b/packages/ui/vite.config.ts index b4055d541cff..0e36d5593ba6 100644 --- a/packages/ui/vite.config.ts +++ b/packages/ui/vite.config.ts @@ -15,7 +15,7 @@ const debugLink = 'http://127.0.0.1:4173' export const config: UserConfig = { root: __dirname, - base: '/__vitest__/', + base: './', resolve: { dedupe: ['vue'], alias: { @@ -24,7 +24,7 @@ export const config: UserConfig = { }, }, define: { - __REPORT__: false, + __BASE_PATH__: '"/__vitest__/"', }, plugins: [ Vue(), From 60191436acc0a1d4498ba99acb4b056a23c4ab61 Mon Sep 17 00:00:00 2001 From: yoho Date: Tue, 17 Jan 2023 22:32:10 +0800 Subject: [PATCH 02/13] fix: dts --- packages/ui/shim.d.ts | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 packages/ui/shim.d.ts diff --git a/packages/ui/shim.d.ts b/packages/ui/shim.d.ts new file mode 100644 index 000000000000..f8a8679ddfc4 --- /dev/null +++ b/packages/ui/shim.d.ts @@ -0,0 +1,3 @@ +/// +/// +/// From a3c3c37e7ef591e3982acb7cabcd5afe53f03760 Mon Sep 17 00:00:00 2001 From: yoho Date: Wed, 18 Jan 2023 22:18:22 +0800 Subject: [PATCH 03/13] chore: update tips --- packages/ui/node/reporter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui/node/reporter.ts b/packages/ui/node/reporter.ts index 79a40a5a5688..a1af7e59b95c 100644 --- a/packages/ui/node/reporter.ts +++ b/packages/ui/node/reporter.ts @@ -72,6 +72,6 @@ export default class HTMLReporter implements Reporter { })) this.ctx.logger.log(`${c.bold(c.inverse(c.magenta(' HTML ')))} ${c.magenta('Report is generated')}`) - this.ctx.logger.log(`${c.dim(' You can run ')}${c.bold(`npx vite preview --base __vitest__ --outDir ${relative(this.ctx.config.root, htmlDir)}`)}${c.dim(' to see the test results.')}`) + this.ctx.logger.log(`${c.dim(' You can run ')}${c.bold(`npx vite preview --outDir ${relative(this.ctx.config.root, htmlDir)}`)}${c.dim(' to see the test results.')}`) } } From 109f7b7adef847de145a57aac8c8c8b1fd468a89 Mon Sep 17 00:00:00 2001 From: yoho Date: Wed, 18 Jan 2023 23:38:46 +0800 Subject: [PATCH 04/13] docs: update --- docs/guide/ui.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide/ui.md b/docs/guide/ui.md index 7b2646868fff..7269c20cce38 100644 --- a/docs/guide/ui.md +++ b/docs/guide/ui.md @@ -42,7 +42,7 @@ If you still want to see how your tests are running in real time in the terminal To preview your HTML report, you can use [vite preview](https://vitejs.dev/guide/cli.html#vite-preview) command: ```sh -npx vite preview --base __vitest__ --outDir ./html +npx vite preview --outDir ./html ``` You can configure output with [`outputFile`](/config/#outputfile) config option. You need to specify `.html` path there. For example, `./html/index.html` is the default value. From b208ac7e95118500910cbae7f911c4d46713c747 Mon Sep 17 00:00:00 2001 From: yoho Date: Sun, 12 Feb 2023 22:23:08 +0800 Subject: [PATCH 05/13] fix: test base on ./ --- test/ui/test/html-report.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/ui/test/html-report.spec.ts b/test/ui/test/html-report.spec.ts index df33bf60dc06..b8e8bd472a23 100644 --- a/test/ui/test/html-report.spec.ts +++ b/test/ui/test/html-report.spec.ts @@ -18,8 +18,8 @@ beforeAll(async () => { const exit = await startServerCommand( root, - `npx vite preview --outDir html --strict-port --base /__vitest__/ --port ${port}`, - `http://localhost:${port}/__vitest__/`, + `npx vite preview --outDir html --strict-port --port ${port}`, + `http://localhost:${port}/`, ) return exit From 6ddb0cbe8056aba54befbab2676fd2e3b51896f1 Mon Sep 17 00:00:00 2001 From: yoho Date: Sun, 12 Feb 2023 22:27:49 +0800 Subject: [PATCH 06/13] fix: types --- packages/ui/client/composables/client/static.ts | 2 +- packages/ui/node/reporter.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ui/client/composables/client/static.ts b/packages/ui/client/composables/client/static.ts index ed2ec87af73f..ac459e9a4259 100644 --- a/packages/ui/client/composables/client/static.ts +++ b/packages/ui/client/composables/client/static.ts @@ -32,7 +32,7 @@ export function createStaticClient(): VitestClient { getFiles: () => { return metadata.files }, - getPaths: async () => { + getPaths: () => { return metadata.paths }, getConfig: () => { diff --git a/packages/ui/node/reporter.ts b/packages/ui/node/reporter.ts index a620fd8e1507..4351c364b2f2 100644 --- a/packages/ui/node/reporter.ts +++ b/packages/ui/node/reporter.ts @@ -30,7 +30,7 @@ export default class HTMLReporter implements Reporter { async onFinished() { const result: HTMLReportData = { - paths: await this.ctx.state.getPaths(), + paths: this.ctx.state.getPaths(), files: this.ctx.state.getFiles(), config: this.ctx.config, moduleGraph: {}, From 98d127c3e6081cb60c05b5a0d11278dd68d6e886 Mon Sep 17 00:00:00 2001 From: yoho Date: Sun, 12 Feb 2023 22:48:42 +0800 Subject: [PATCH 07/13] fix: types --- packages/ui/client/shim.d.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/packages/ui/client/shim.d.ts b/packages/ui/client/shim.d.ts index a98bf7b9b743..2816152ad54f 100644 --- a/packages/ui/client/shim.d.ts +++ b/packages/ui/client/shim.d.ts @@ -1,13 +1,6 @@ /// /// -declare module '*.vue' { - import type { DefineComponent } from 'vue' - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types - const component: DefineComponent<{}, {}, any> - export default component -} - const __BASE_PATH__: string declare interface Window { From 352bc0effccb5206388f9bfd3c540a8589185d45 Mon Sep 17 00:00:00 2001 From: yoho Date: Tue, 14 Feb 2023 10:19:06 +0800 Subject: [PATCH 08/13] fix: window --- test/ui/test/html-report.spec.ts | 9 ++++++--- test/ui/test/ui.spec.ts | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/test/ui/test/html-report.spec.ts b/test/ui/test/html-report.spec.ts index b8e8bd472a23..8c8ce3f555df 100644 --- a/test/ui/test/html-report.spec.ts +++ b/test/ui/test/html-report.spec.ts @@ -7,6 +7,9 @@ const root = resolve(__dirname, '../fixtures') const port = ports.report beforeAll(async () => { + if (process.platform === 'win32') + return + execaCommandSync('npx vitest run --reporter=html --outputFile=html/index.html', { cwd: root, env: { @@ -25,11 +28,11 @@ beforeAll(async () => { return exit }) -it('dashboard', async () => { +it.runIf(process.platform !== 'win32')('dashboard', async () => { await untilUpdated(() => page.textContent('[aria-labelledby]'), '1 Pass 0 Fail 1 Total ') }) -describe('file detail', async () => { +describe.runIf(process.platform !== 'win32')('file detail', async () => { beforeAll(async () => { await page.click('.details-panel span') }) @@ -53,6 +56,6 @@ describe('file detail', async () => { }) }) -it('no error happen', () => { +it.runIf(process.platform !== 'win32')('no error happen', () => { expect(browserErrors.length).toEqual(0) }) diff --git a/test/ui/test/ui.spec.ts b/test/ui/test/ui.spec.ts index 03ab3ac70697..84b8f3d59ad5 100644 --- a/test/ui/test/ui.spec.ts +++ b/test/ui/test/ui.spec.ts @@ -6,6 +6,9 @@ const root = resolve(__dirname, '../fixtures') const port = ports.ui beforeAll(async () => { + if (process.platform === 'win32') + return + const exit = await startServerCommand( root, `npx vitest --ui --open false --api.port ${port} --watch --allowOnly`, @@ -15,11 +18,11 @@ beforeAll(async () => { return exit }) -it('dashboard', async () => { +it.runIf(process.platform !== 'win32')('dashboard', async () => { await untilUpdated(() => page.textContent('[aria-labelledby]'), '1 Pass 0 Fail 1 Total ') }) -describe('file detail', async () => { +describe.runIf(process.platform !== 'win32')('file detail', async () => { beforeAll(async () => { await page.click('.details-panel span') }) @@ -43,6 +46,6 @@ describe('file detail', async () => { }) }) -it('no error happen', () => { +it.runIf(process.platform !== 'win32')('no error happen', () => { expect(browserErrors.length).toEqual(0) }) From 5041db5991fa5adad19d187b8d53921fd19892b3 Mon Sep 17 00:00:00 2001 From: yoho Date: Tue, 14 Feb 2023 12:22:58 +0800 Subject: [PATCH 09/13] fix: base --- test/ui/test/html-report.spec.ts | 6 +++--- test/ui/test/ui.spec.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/ui/test/html-report.spec.ts b/test/ui/test/html-report.spec.ts index 6f8f57f65ad1..5bdf62aa482c 100644 --- a/test/ui/test/html-report.spec.ts +++ b/test/ui/test/html-report.spec.ts @@ -20,8 +20,8 @@ describe.skipIf(isWindows)('html report', () => { const exit = await startServerCommand( root, - `npx vite preview --outDir html --strict-port --base /__vitest__/ --port ${port}`, - `http://localhost:${port}/__vitest__/`, + `npx vite preview --outDir html --strict-port --port ${port}`, + `http://localhost:${port}/`, ) return exit @@ -58,4 +58,4 @@ describe.skipIf(isWindows)('html report', () => { it('no error happen', () => { expect(browserErrors.length).toEqual(0) }) -}) +}, 60_000) diff --git a/test/ui/test/ui.spec.ts b/test/ui/test/ui.spec.ts index d13a133c7609..1a62673cecef 100644 --- a/test/ui/test/ui.spec.ts +++ b/test/ui/test/ui.spec.ts @@ -48,4 +48,4 @@ describe.skipIf(isWindows)('ui', () => { it('no error happen', () => { expect(browserErrors.length).toEqual(0) }) -}) +}, 60_000) From bd0f54fcd52870c9da1d92abe9cfbd2706556351 Mon Sep 17 00:00:00 2001 From: yoho Date: Tue, 14 Feb 2023 13:07:55 +0800 Subject: [PATCH 10/13] chore: update --- test/ui/test/html-report.spec.ts | 2 +- test/ui/test/ui.spec.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/ui/test/html-report.spec.ts b/test/ui/test/html-report.spec.ts index 5bdf62aa482c..05baab68b530 100644 --- a/test/ui/test/html-report.spec.ts +++ b/test/ui/test/html-report.spec.ts @@ -58,4 +58,4 @@ describe.skipIf(isWindows)('html report', () => { it('no error happen', () => { expect(browserErrors.length).toEqual(0) }) -}, 60_000) +}) diff --git a/test/ui/test/ui.spec.ts b/test/ui/test/ui.spec.ts index 1a62673cecef..d13a133c7609 100644 --- a/test/ui/test/ui.spec.ts +++ b/test/ui/test/ui.spec.ts @@ -48,4 +48,4 @@ describe.skipIf(isWindows)('ui', () => { it('no error happen', () => { expect(browserErrors.length).toEqual(0) }) -}, 60_000) +}) From 33a637b8de5f4f7e18ab08cce594a36a5bb7642b Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Mon, 20 Mar 2023 12:24:00 +0100 Subject: [PATCH 11/13] chore: fix types --- packages/ui/client/composables/client/index.ts | 7 +++---- packages/ui/client/composables/client/static.ts | 1 + packages/ui/client/constants.ts | 7 +++++++ packages/ui/client/global-setup.ts | 4 ++-- packages/ui/client/shim.d.ts | 6 ------ 5 files changed, 13 insertions(+), 12 deletions(-) create mode 100644 packages/ui/client/constants.ts diff --git a/packages/ui/client/composables/client/index.ts b/packages/ui/client/composables/client/index.ts index 8fe4571fb8bb..c39a961b0c20 100644 --- a/packages/ui/client/composables/client/index.ts +++ b/packages/ui/client/composables/client/index.ts @@ -3,14 +3,13 @@ import type { WebSocketStatus } from '@vueuse/core' import type { Ref } from 'vue' import { reactive } from 'vue' import type { RunState } from '../../../types' +import { ENTRY_URL, isReport } from '../../constants' import { activeFileId } from '../params' import { createStaticClient } from './static' import type { File, ResolvedConfig } from '#types' -export const PORT = import.meta.hot ? '51204' : location.port -export const HOST = [location.hostname, PORT].filter(Boolean).join(':') -export const ENTRY_URL = `${location.protocol === 'https:' ? 'wss:' : 'ws:'}//${HOST}/__vitest_api__` -export const isReport = !!window.METADATA_PATH +export { ENTRY_URL, PORT, HOST } from '../../constants' + export const testRunState: Ref = ref('idle') export const client = (function createVitestClient() { diff --git a/packages/ui/client/composables/client/static.ts b/packages/ui/client/composables/client/static.ts index ac459e9a4259..b51d759f8259 100644 --- a/packages/ui/client/composables/client/static.ts +++ b/packages/ui/client/composables/client/static.ts @@ -68,6 +68,7 @@ export function createStaticClient(): VitestClient { } async function registerMetadata() { + // @ts-expect-error metadata path is not defined globally const res = await fetch(window.METADATA_PATH!) metadata = parse(await res.text()) as HTMLReportMetadata const event = new Event('open') diff --git a/packages/ui/client/constants.ts b/packages/ui/client/constants.ts new file mode 100644 index 000000000000..a63d9fd55e33 --- /dev/null +++ b/packages/ui/client/constants.ts @@ -0,0 +1,7 @@ +export const PORT = import.meta.hot ? '51204' : location.port +export const HOST = [location.hostname, PORT].filter(Boolean).join(':') +export const ENTRY_URL = `${location.protocol === 'https:' ? 'wss:' : 'ws:'}//${HOST}/__vitest_api__` +// @ts-expect-error METADATA_PATH is not typed +export const isReport = !!window.METADATA_PATH +// @ts-expect-error __BASE_PATH__ is injected +export const BASE_PATH = isReport ? import.meta.env.BASE_URL : __BASE_PATH__ diff --git a/packages/ui/client/global-setup.ts b/packages/ui/client/global-setup.ts index 68ce9f29445a..552e79065241 100644 --- a/packages/ui/client/global-setup.ts +++ b/packages/ui/client/global-setup.ts @@ -3,7 +3,6 @@ import { createRouter as _createRouter, createWebHistory } from 'vue-router' import FloatingVue, { VTooltip } from 'floating-vue' import routes from 'virtual:generated-pages' -import { isReport } from '~/composables/client' import 'd3-graph-controller/default.css' import 'splitpanes/dist/splitpanes.css' import '@unocss/reset/tailwind.css' @@ -12,6 +11,7 @@ import 'codemirror-theme-vars/base.css' import './styles/main.css' import 'floating-vue/dist/style.css' import 'uno.css' +import { BASE_PATH } from './constants' export const directives = { tooltip: VTooltip, @@ -21,7 +21,7 @@ FloatingVue.options.instantMove = true FloatingVue.options.distance = 10 export const createRouter = () => _createRouter({ - history: createWebHistory(isReport ? import.meta.env.BASE_URL : __BASE_PATH__), + history: createWebHistory(BASE_PATH), routes, }) diff --git a/packages/ui/client/shim.d.ts b/packages/ui/client/shim.d.ts index 2816152ad54f..5c48b9640e96 100644 --- a/packages/ui/client/shim.d.ts +++ b/packages/ui/client/shim.d.ts @@ -1,8 +1,2 @@ /// /// - -const __BASE_PATH__: string - -declare interface Window { - METADATA_PATH?: string -} From f1a1afeb553c8415bcd692f664cccd122cc7b534 Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Mon, 20 Mar 2023 12:25:43 +0100 Subject: [PATCH 12/13] chore: improve types --- packages/ui/client/composables/client/static.ts | 1 - packages/ui/client/constants.ts | 2 -- packages/ui/client/shim.d.ts | 6 ++++++ tsconfig.json | 1 + 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/ui/client/composables/client/static.ts b/packages/ui/client/composables/client/static.ts index b51d759f8259..ac459e9a4259 100644 --- a/packages/ui/client/composables/client/static.ts +++ b/packages/ui/client/composables/client/static.ts @@ -68,7 +68,6 @@ export function createStaticClient(): VitestClient { } async function registerMetadata() { - // @ts-expect-error metadata path is not defined globally const res = await fetch(window.METADATA_PATH!) metadata = parse(await res.text()) as HTMLReportMetadata const event = new Event('open') diff --git a/packages/ui/client/constants.ts b/packages/ui/client/constants.ts index a63d9fd55e33..89adbd9d0807 100644 --- a/packages/ui/client/constants.ts +++ b/packages/ui/client/constants.ts @@ -1,7 +1,5 @@ export const PORT = import.meta.hot ? '51204' : location.port export const HOST = [location.hostname, PORT].filter(Boolean).join(':') export const ENTRY_URL = `${location.protocol === 'https:' ? 'wss:' : 'ws:'}//${HOST}/__vitest_api__` -// @ts-expect-error METADATA_PATH is not typed export const isReport = !!window.METADATA_PATH -// @ts-expect-error __BASE_PATH__ is injected export const BASE_PATH = isReport ? import.meta.env.BASE_URL : __BASE_PATH__ diff --git a/packages/ui/client/shim.d.ts b/packages/ui/client/shim.d.ts index 5c48b9640e96..2816152ad54f 100644 --- a/packages/ui/client/shim.d.ts +++ b/packages/ui/client/shim.d.ts @@ -1,2 +1,8 @@ /// /// + +const __BASE_PATH__: string + +declare interface Window { + METADATA_PATH?: string +} diff --git a/tsconfig.json b/tsconfig.json index aa7534d66b93..09da25c19f99 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -48,6 +48,7 @@ "./packages/*/*.d.ts", "./packages/*/*.d.cts", "./packages/ui/client/**", + "./packages/ui/cypress/**", "./examples/**/*.*", "./bench/**", "./test/typescript/**" From 50b5cace25f58db40d665059e846a4afc532a1f0 Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Mon, 20 Mar 2023 12:37:36 +0100 Subject: [PATCH 13/13] chore: cleanup --- packages/ui/client/composables/client/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui/client/composables/client/index.ts b/packages/ui/client/composables/client/index.ts index c39a961b0c20..ef1e41fc9b9a 100644 --- a/packages/ui/client/composables/client/index.ts +++ b/packages/ui/client/composables/client/index.ts @@ -8,7 +8,7 @@ import { activeFileId } from '../params' import { createStaticClient } from './static' import type { File, ResolvedConfig } from '#types' -export { ENTRY_URL, PORT, HOST } from '../../constants' +export { ENTRY_URL, PORT, HOST, isReport } from '../../constants' export const testRunState: Ref = ref('idle')