Enable Playwright e2e tests in dev container and CI pipeline
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
BIN
tests/visual.spec.ts-snapshots/home-chromium-linux.png
Normal file
BIN
tests/visual.spec.ts-snapshots/home-chromium-linux.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 565 KiB |
Reference in New Issue
Block a user