Repository navigation
Conversation
pnpm test has not been runnable: jest.config.ts needs ts-node to parse a TypeScript config, and ts-node is not a dependency, so the command died before reaching a single test. Renaming the config to .mjs fixes it with no new dependency - the file is already ESM and needs no transpiling. That unlocks 203 passing tests across 24 suites which no one could run, and nothing ran them: 13 workflows, none of which touch lint, tests or types. PRs were deployed to a staging slot without being checked. Adds a workflow that installs, generates the Tina client (two suites import it, and --local needs no credentials) and runs the suite on every PR. Verified locally: 203 passed, 8 skipped. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
pnpm lint reported 183 errors, which looked like years of lint debt needing a ratchet. None of it was source code: - ~140 were in public/admin/assets, the minified TinaCMS admin bundle. It is generated and gitignored, but biome's useIgnoreFile only reads the root .gitignore, not the nested one that ignores it. Excluded explicitly instead. - The rest were parse failures, not lint rules. .vscode/settings.json and .vscode/extensions.json have carried unresolved merge conflict markers since 622165c, the Gatsby-to-Next migration - so VS Code has been silently ignoring both files ever since. Resolved to the HEAD side, which is the Biome and Next config this repo actually uses; the other side configured ESLint, Prettier and Gatsby's .cache. - 41 were styles.css, where Tailwind v4 directives (@source, @plugin, @custom-variant) need tailwindDirectives enabled in biome's CSS parser, exactly as the diagnostic suggests. - 1 was the config schema pinned to 2.3.3 against a 2.4.14 CLI. pnpm lint now checks 331 files clean, so it goes into CI as-is and no ratchet is needed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
joshbermanssw
approved these changes
Oct 29, 2026
This branch was successfully deployed
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.
Same treatment as SSWConsulting/SSW.Products#847, after a retrospective found this repo had no checks in CI. 13 workflows deploy every PR to a staging slot, and none of them run lint, tests or types.
Both of the repo's own check commands turned out to be broken, in ways that had nothing to do with the code.
pnpm testcould not run at alljest.config.tsis a TypeScript config, which Jest can only parse withts-node— andts-nodeis not a dependency. The command died before reaching a single test:The file is already ESM and needs no transpiling, so renaming it to
jest.config.mjsfixes it with no new dependency — unlocking 203 passing tests across 24 suites that nobody could run.pnpm lintreported 183 errors, none of them lint debtThis looked like years of accumulated debt needing a ratchet. It wasn't. Four unrelated causes:
public/admin/assets— the minified TinaCMS admin bundle. It's generated and gitignored, but biome'suseIgnoreFileonly reads the root.gitignore, not the nestedpublic/admin/.gitignorethat ignores it. Excluded explicitly..vscode/settings.jsonand.vscode/extensions.json. Both files have carried<<<<<<< HEADsince622165c, the Gatsby-to-Next migration — so they're invalid JSON and VS Code has been silently ignoring both ever since. Resolved to the HEAD side (Biome + Next, which is what this repo uses); the other side configured ESLint, Prettier and Gatsby's.cache.styles.css— Tailwind v4 directives (@source,@plugin,@custom-variant) needtailwindDirectivesenabled in biome's CSS parser, exactly as the diagnostic suggests.pnpm lintnow checks 331 files clean, so it goes into CI as-is. No ratchet needed.The workflow
Installs, generates the Tina client, then lints and tests on every PR. The Tina step is needed because
tina/__generated__is gitignored and two suites import the generated client;--localbuilds against a local GraphQL server, so no TinaCloud credentials are required.Verified locally and on this PR: lint clean across 331 files, 203 tests passed, 8 skipped — green in 1m26s.
Still not included
tsc --noEmithas 3 errors, all one cause:redirects.json,category-uri-title-map.jsonandorphaned_rules.jsonare generated byprepare:contentfrom SSW.Rules.Content and gitignored. Adding typecheck means checking out the content repo in CI, asbuild-artifacts.ymlalready does — doable, but it turns a 90-second job into a slow one, so it deserves its own decision.Also worth a look
tsconfig.tsbuildinfois tracked in git. It's a build cache, so runningtsclocally dirties the working tree every time. It probably belongs in.gitignore.🤖 Changes made by Claude Opus 5 via Claude Code