From 61ad03be535f2af942187567080cf33be1a5172c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 22 Feb 2026 18:03:22 +0000 Subject: [PATCH 1/2] Initial plan From d4c1c5b1241050cc0b4d00c204d48fb420ebda24 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 22 Feb 2026 18:11:46 +0000 Subject: [PATCH 2/2] feat: setup Playwright UI monitoring with screenshot tests and Dependabot Co-authored-by: artonge <6653109+artonge@users.noreply.github.com> --- .github/dependabot.yml | 11 ++--- .github/workflows/playwright.yml | 29 ++++++++++++ e2e/vue.spec.ts | 45 ++++++++++++++++--- e2e/vue.spec.ts-snapshots/about-chromium.png | Bin 0 -> 21467 bytes e2e/vue.spec.ts-snapshots/home-chromium.png | Bin 0 -> 15234 bytes package-lock.json | 20 +++++++++ playwright.config.ts | 8 +++- 7 files changed, 98 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/playwright.yml create mode 100644 e2e/vue.spec.ts-snapshots/about-chromium.png create mode 100644 e2e/vue.spec.ts-snapshots/home-chromium.png diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e728fd4..aff82a1 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,11 +1,6 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file - version: 2 updates: - - package-ecosystem: "" # See documentation for possible values - directory: "/" # Location of package manifests + - package-ecosystem: "npm" + directory: "/" schedule: - interval: "monthly" + interval: "weekly" diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml new file mode 100644 index 0000000..23ea7e9 --- /dev/null +++ b/.github/workflows/playwright.yml @@ -0,0 +1,29 @@ +name: Playwright tests + +on: + push: + branches: ["master"] + pull_request: + +permissions: + contents: read + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + - run: npm ci + - run: npx playwright install --with-deps chromium + - run: npm run build-only -- --mode dev + - run: npm run test:e2e -- --project=chromium + - uses: actions/upload-artifact@v4 + if: always() + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 diff --git a/e2e/vue.spec.ts b/e2e/vue.spec.ts index 3e5a3d0..8d40400 100644 --- a/e2e/vue.spec.ts +++ b/e2e/vue.spec.ts @@ -1,8 +1,41 @@ import { test, expect } from '@playwright/test'; -// See here how to get started: -// https://playwright.dev/docs/intro -test('visits the app root url', async ({ page }) => { - await page.goto('/'); - await expect(page.locator('div.greetings > h1')).toHaveText('You did it!'); -}) +test.describe('Home page', () => { + test.beforeEach(async ({ context }) => { + await context.clearCookies(); + await context.addInitScript(() => localStorage.clear()); + }); + + test('shows header with logo and city search input', async ({ page }) => { + await page.goto('/'); + + await expect(page.locator('header')).toBeVisible(); + await expect(page.locator('header a[href="/about"] img')).toBeVisible(); + await expect(page.locator('.vs__search')).toBeVisible(); + await expect(page.locator('.vs__search')).toHaveAttribute('placeholder', 'Enter a city name. Ex: Paris'); + await expect(page.locator('button[aria-label="Use device location"]')).toBeVisible(); + }); + + test('matches screenshot', async ({ page }) => { + await page.goto('/'); + await expect(page).toHaveScreenshot('home.png'); + }); +}); + +test.describe('About page', () => { + test('shows settings and info sections', async ({ page }) => { + await page.goto('/about'); + + await expect(page.locator('header a[href="/"]')).toBeVisible(); + await expect(page.locator('h3').filter({ hasText: 'Models' })).toBeVisible(); + await expect(page.locator('h3').filter({ hasText: 'Forecast length' })).toBeVisible(); + await expect(page.locator('h3').filter({ hasText: 'Build date' })).toBeVisible(); + await expect(page.locator('h3').filter({ hasText: 'Source code' })).toBeVisible(); + await expect(page.locator('a[href="https://github.com/artonge/meteo"]')).toBeVisible(); + }); + + test('matches screenshot', async ({ page }) => { + await page.goto('/about'); + await expect(page).toHaveScreenshot('about.png'); + }); +}); diff --git a/e2e/vue.spec.ts-snapshots/about-chromium.png b/e2e/vue.spec.ts-snapshots/about-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb8487927662e6d22a4e9ca8c47ee74c2014867 GIT binary patch literal 21467 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 literal 0 HcmV?d00001 diff --git a/e2e/vue.spec.ts-snapshots/home-chromium.png b/e2e/vue.spec.ts-snapshots/home-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..cafc657d9c90dc56e8deeee2fe311483bd5d4e25 GIT binary patch literal 15234 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 0c0ee06..632c02d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -125,6 +125,7 @@ "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", @@ -1780,6 +1781,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -1826,6 +1828,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" } @@ -3671,6 +3674,7 @@ "integrity": "sha512-6JSSaBZmsKvEkbRUkf7Zj7dru/8ZCrJxAqArcLaVMee5907JdtEbKGsZ7zNiIm/UAkpGUkaSMZEXShnN2D1HZA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.46.1", "@typescript-eslint/types": "8.46.1", @@ -4335,6 +4339,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4652,6 +4657,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.9", "caniuse-lite": "^1.0.30001746", @@ -4801,6 +4807,7 @@ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz", "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==", "license": "MIT", + "peer": true, "dependencies": { "@kurkle/color": "^0.3.0" }, @@ -5105,6 +5112,7 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/kossnocorp" @@ -5533,6 +5541,7 @@ "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -5638,6 +5647,7 @@ "integrity": "sha512-SbR9ZBUFKgvWAbq3RrdCtWaW0IKm6wwUiApxf3BVTNfqUIo4IQQmreMg2iHFJJ6C/0wss3LXURBJ1OwS/MhFcQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "natural-compare": "^1.4.0", @@ -8007,6 +8017,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -8326,6 +8337,7 @@ "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -8491,6 +8503,7 @@ "resolved": "https://registry.npmjs.org/sass/-/sass-1.93.2.tgz", "integrity": "sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==", "license": "MIT", + "peer": true, "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", @@ -9247,6 +9260,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -9466,6 +9480,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -9675,6 +9690,7 @@ "integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -9837,6 +9853,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -9942,6 +9959,7 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.22.tgz", "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==", "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.22", "@vue/compiler-sfc": "3.5.22", @@ -10426,6 +10444,7 @@ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -10526,6 +10545,7 @@ "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "rollup": "dist/bin/rollup" }, diff --git a/playwright.config.ts b/playwright.config.ts index 92075cc..7d44da8 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -28,7 +28,13 @@ export default defineConfig({ /* Opt out of parallel tests on CI. */ workers: process.env.CI ? 1 : undefined, /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: 'html', + reporter: [['html', { open: 'never' }]], + + /* Update snapshots only when missing so the first CI run creates the baselines */ + updateSnapshots: 'missing', + + /* Store snapshots next to the test files */ + snapshotPathTemplate: '{testDir}/{testFilePath}-snapshots/{arg}-{projectName}{ext}', /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ use: { /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */