Enable Playwright e2e tests in dev container and CI pipeline
Some checks failed
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/push/deploy unknown status

This commit is contained in:
2026-02-01 13:51:20 -03:00
parent 4bcce26a74
commit 81abdf4539
5 changed files with 100 additions and 73 deletions

View File

@@ -3,9 +3,22 @@
FROM mcr.microsoft.com/devcontainers/javascript-node:1-22-bookworm FROM mcr.microsoft.com/devcontainers/javascript-node:1-22-bookworm
# Install system deps if needed (none required for static site) # Install system deps for static site tooling + Playwright (e2e tests)
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
curl \ curl \
# Playwright browser dependencies (so e2e tests run inside devcontainer)
libnspr4 \
libnss3 \
libatk1.0-0 \
libdbus-1-3 \
libatspi2.0-0 \
libxcomposite1 \
libxdamage1 \
libxfixes3 \
libxrandr2 \
libgbm1 \
libxkbcommon0 \
libasound2 \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
# Ensure workspace dir exists (mount point) # Ensure workspace dir exists (mount point)

View File

@@ -1,39 +1,43 @@
{ {
"name": "mifi Ventures Landing", "name": "mifi Ventures Landing",
"dockerFile": "Dockerfile", "dockerFile": "Dockerfile",
"workspaceFolder": "/workspaces/mifi-ventures-landing", "workspaceFolder": "/workspaces/mifi-ventures-landing",
"workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/mifi-ventures-landing,type=bind", "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/mifi-ventures-landing,type=bind",
"forwardPorts": [5173, 4173], "postCreateCommand": "pnpm install && pnpm exec playwright install chromium",
"portsAttributes": { "forwardPorts": [5173, 4173],
"5173": { "portsAttributes": {
"label": "Dev (Vite)", "5173": {
"onAutoForward": "notify" "label": "Dev (Vite)",
}, "onAutoForward": "notify"
"4173": {
"label": "Preview (Vite)",
"onAutoForward": "notify"
}
},
"customizations": {
"vscode": {
"extensions": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
],
"settings": {
"files.associations": {
"*.html": "html",
"*.css": "css",
"*.svg": "svg"
}, },
"editor.formatOnSave": true, "4173": {
"editor.defaultFormatter": "esbenp.prettier-vscode", "label": "Preview (Vite)",
"files.watcherExclude": { "onAutoForward": "notify"
"**/node_modules/**": true,
"**/.git/objects/**": true
} }
} },
} "customizations": {
}, "vscode": {
"remoteUser": "node" "extensions": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"rvest.vs-code-prettier-eslint",
"yoavbls.pretty-ts-errors",
"svelte.svelte-vscode"
],
"settings": {
"files.associations": {
"*.html": "html",
"*.css": "css",
"*.svg": "svg"
},
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"files.watcherExclude": {
"**/node_modules/**": true,
"**/.git/objects/**": true
}
}
}
},
"remoteUser": "node"
} }

View File

@@ -33,3 +33,13 @@ steps:
commands: commands:
- corepack enable && corepack prepare pnpm@10.28.2 --activate - corepack enable && corepack prepare pnpm@10.28.2 --activate
- pnpm test - pnpm test
- name: test e2e
image: mcr.microsoft.com/playwright:v1.58.0-noble
commands:
- corepack enable && corepack prepare pnpm@10.28.2 --activate
- pnpm install --frozen-lockfile || pnpm install
- pnpm run build
- npx serve dist -p 4173 &
- sleep 2
- CI=1 pnpm run test:e2e

View File

@@ -5,41 +5,41 @@ import prettier from 'eslint-config-prettier';
import svelteConfig from './svelte.config.js'; import svelteConfig from './svelte.config.js';
export default [ export default [
{ {
ignores: [ ignores: [
'.svelte-kit/**', '.svelte-kit/**',
'dist/**', 'dist/**',
'build/**', 'build/**',
'node_modules/**', 'node_modules/**',
'site/**', 'site/**',
'static/**', 'static/**',
'build.mjs' 'build.mjs',
] ],
}, },
js.configs.recommended, js.configs.recommended,
...tseslint.configs.recommended, ...tseslint.configs.recommended,
...svelte.configs['flat/recommended'], ...svelte.configs['flat/recommended'],
prettier, prettier,
{ {
files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'], files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'],
languageOptions: { languageOptions: {
parserOptions: { parserOptions: {
parser: tseslint.parser, parser: tseslint.parser,
projectService: true, projectService: true,
extraFileExtensions: ['.svelte'], extraFileExtensions: ['.svelte'],
svelteConfig svelteConfig,
} },
} },
}, },
{ {
files: ['**/*.mjs', 'build.mjs'], files: ['**/*.mjs', 'build.mjs'],
languageOptions: { globals: { console: 'readonly', process: 'readonly' } } languageOptions: { globals: { console: 'readonly', process: 'readonly' } },
}, },
{ {
rules: { rules: {
'svelte/no-at-html-tags': 'warn', 'svelte/no-at-html-tags': 'warn',
'svelte/require-each-key': 'off', 'svelte/require-each-key': 'off',
'svelte/no-navigation-without-resolve': 'off' 'svelte/no-navigation-without-resolve': 'off',
} },
} },
]; ];

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 KiB