Conversation
TDD'd per writing-skills: baseline agent under time pressure ran only
unit tests and declared ready ('tree matches HEAD, no further
verification needed'); with the skill, the same scenario produced a
full uninterrupted pnpm ready run, a root-cause fix justified against
CLAUDE.md invariants, and a gate re-run after the fix.
Also corrects the audit skill's now-false claim that no pnpm ready
gate exists.
Establish a modern lint/format baseline for the Vue 3 + Vite codebase. - ESLint 10 flat config (eslint.config.mjs): eslint-plugin-vue for template rules, @vitest/eslint-plugin and eslint-plugin-playwright scoped to their test dirs, and per-area globals (browser src / node configs / tests). - Prettier owns formatting; @vue/eslint-config-prettier/skip-formatting sits last so ESLint never fights Prettier. prettier-plugin-tailwindcss sorts Tailwind v4 classes. - Add lint / lint:fix / format / format:check scripts; fold them into `ready`. - Enforce in CI as static-only steps inside the existing unit-test job (no browser/e2e added to CI). - .editorconfig + .vscode settings for format-on-save and ESLint autofix. - Format the codebase and fix the dead code the new rules surfaced (unused `toggleSetting`, unused `page` import, unused catch binding). Config kept as .mjs because postcss.config.js is CommonJS, so package.json cannot adopt "type": "module".
Resolve the eslint-plugin-playwright warnings in the e2e suite by adopting
auto-retrying, web-first patterns. All 30 tests still pass across Chromium,
Firefox, and WebKit.
- waitForSelector -> expect(locator).toBeVisible()
- page.click(selector) -> page.locator(...).click()
- waitForTimeout -> expect.poll(count) / web-first visibility assertions
- drop the try/catch + conditional when counting initial log entries
(.count() already returns 0 on an empty log)
- give the clipboard test a real assertion: accept either the success
("Copied to clipboard!") or failure notice via locator.or(), which is
robust to per-browser clipboard-permission differences
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Incorporates the two open Dependabot updates (build group: vite, testing group: jsdom) directly onto dev rather than merging the Dependabot branches, which were cut before the ESLint + Prettier tooling landed and would have reverted it. Full local gate green on the new versions: pnpm audit clean, lint, format:check, 49 unit + 14 browser + 30 E2E tests, and production build with service-worker generation all pass. Closes the vite and jsdom Dependabot PRs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
pnpm readyscript chains lint → format check → unit + browser tests → E2E (3 engines) → build as the local pre-PR gate, with a matching/readyClaude skill that enforces running it uninterrupted and fixing root causes rather than weakening testsexpect(locator).toHaveXauto-retry) — removes fixedwaitForTimeoutsleeps and the no-op clipboard "test"toggleSetting, unusedpageimport, unused catch binding)Dependency updates
<8.0.0, so pnpm warns on install, but the full gate passes on the new versions;pnpm auditreports no known vulnerabilitiesDecisions
.mjsbecausepostcss.config.jsis CommonJS, so package.json can't adopt"type": "module"@vue/eslint-config-prettier/skip-formattingsits last in the ESLint config so ESLint never fights Prettier — Prettier alone owns formattingFull
pnpm readyrun is green on this exact tree, now on vite 8 / jsdom 29 (lint, format, 49 unit, 14 browser, 30 E2E across Chromium/Firefox/WebKit, production build with service-worker generation).