diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml new file mode 100644 index 0000000000..fed2b78f19 --- /dev/null +++ b/.github/workflows/playwright.yml @@ -0,0 +1,29 @@ +name: Playwright Tests +on: + push: + branches: [main] + pull_request: + workflow_dispatch: +jobs: + test: + timeout-minutes: 60 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + - name: Install dependencies + run: npm install -g pnpm && pnpm install + - name: Install Playwright Browsers + run: pnpm exec playwright install --with-deps + - name: Build + run: pnpm run build + - name: Run Playwright tests + run: pnpm exec playwright test + - uses: actions/upload-artifact@v4 + if: ${{ !cancelled() }} + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 diff --git a/.gitignore b/.gitignore index e40bdc1578..5f56572b94 100644 --- a/.gitignore +++ b/.gitignore @@ -53,4 +53,10 @@ Temporary Items packages/devtools/README.md clones + +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ + packages/devtools/client/public/discovery/index.html diff --git a/local.ts b/local.ts index b519052c80..2244cc3e80 100644 --- a/local.ts +++ b/local.ts @@ -23,12 +23,13 @@ import { getPort } from 'get-port-please' import { resolve } from 'pathe' import { searchForWorkspaceRoot } from 'vite' import { startSubprocess } from './packages/devtools-kit/src/index' -import { defaultOptions } from './packages/devtools/src/constant' +import { CLIENT_BASE, defaultOptions } from './packages/devtools/src/constant' import { packageDir } from './packages/devtools/src/dirs' import { enableModule } from './packages/devtools/src/module-main' export type { ModuleOptions } +export const clientRouteName = '/__nuxt_devtools__/client' export default defineNuxtModule({ meta: { name: '@nuxt/devtools', @@ -45,7 +46,7 @@ export default defineNuxtModule({ // add proxy to client config.server.proxy ||= {} // TODO: ws proxy is not working - config.server.proxy['/__nuxt_devtools__/client'] = { + config.server.proxy[CLIENT_BASE] = { target: `http://localhost:${PORT}`, changeOrigin: true, followRedirects: true, diff --git a/package.json b/package.json index 8a82509e8b..f48d6ae853 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,10 @@ "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", "release": "pnpm test && bumpp -r -x \"pnpm run changelog\" --all", "test": "pnpm lint", + "test:e2e": "pnpm playwright test", "docs": "nuxi dev docs", "docs:build": "CI=true nuxi generate docs", + "fixture:empty": "pnpm -C playgrounds/empty run dev", "typecheck": "vue-tsc --noEmit", "postinstall": "npx simple-git-hooks && pnpm -C docs install", "prepare": "pnpm -r --filter=\"./packages/*\" run dev:prepare" @@ -31,6 +33,7 @@ "@nuxt/module-builder": "catalog:", "@nuxt/schema": "catalog:", "@opentelemetry/api": "catalog:", + "@playwright/test": "catalog:", "@types/markdown-it": "catalog:", "@types/node": "catalog:", "@types/which": "catalog:", diff --git a/packages/devtools/client/pages/index.vue b/packages/devtools/client/pages/index.vue index 5ed6f7514e..dc035a7cdf 100644 --- a/packages/devtools/client/pages/index.vue +++ b/packages/devtools/client/pages/index.vue @@ -31,9 +31,9 @@ function hideFloatingPanel() {