Repository navigation
feat!: support CodeceptJS 3.7+/4 and Visual Regression Tracker 6 - #53
Merged
Merged
Conversation
- Take screenshots from page.screenshot() for Playwright and Puppeteer: their saveScreenshot() returns nothing, so 4.6.1 failed with "Cannot read properties of undefined (reading 'toString')". WebDriver and Appium save to a temp file through saveScreenshot(). - Extend @codeceptjs/helper instead of the codecept_helper global, which CodeceptJS 4 deprecates and drops with noGlobals. - Move to sdk-js ^5.8.0: sourceBranch, comment, customTags and retryCount are passed through, and settings missing from the helper config come from vrt.json and VRT_* variables. - Upload screenshots as multipart instead of base64 JSON, so large full-page shots no longer need a raised BODY_PARSER_JSON_LIMIT. - TypeScript 6, Jest 30, unit tests; Node.js >= 20. BREAKING CHANGE: requires CodeceptJS 3.7+ or 4, Node.js 20+ and sdk-js 5 (Visual Regression Tracker server 5+). The TestCafe and WebDriverIO helpers are no longer supported. VRT_* variables and vrt.json now fill settings missing from the helper config. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CI builds and tests on Node.js 20, 22 and 24. Pushes to master release with semantic-release (conventionalcommits preset, v-prefixed tags as in agent-playwright) and publish to npm through trusted publishing with provenance. Dependabot checks npm and GitHub Actions weekly in groups. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ender Preset 10 needs conventional-changelog-writer 9, while semantic-release 25.0.9 ships writer 8, so generateNotes failed with "Missing helper". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- LICENSE file and license field are Apache-2.0, like the other VRT clients. - semantic-release leaves devDependencies: its bundled npm carried vulnerable undici and ip-address that no override can patch. release.yml runs pinned semantic-release 25.0.9 with the conventionalcommits preset 9.3.1. - glob and minimatch are overridden past their advisories for jest. - package.json version is a placeholder (0.0.0-development). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Node.js 20 is end-of-life. CI tests 22, 24 and 26. The README follows the template shared by sdk-js and the other agents. BREAKING CHANGE: Node.js 20 is no longer supported. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 2, 2026
Closed
|
🎉 This PR is included in version 5.0.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
This was referenced Nov 2, 2026
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.
Modernises the CodeceptJS helper for current CodeceptJS and Visual Regression Tracker 6, and releases it like agent-playwright. This is a breaking change, so it releases as 5.0.0.
Before merging (owner)
Tag the last release. The repo has no git tags; 4.6.1 was published by hand. Without a tag, semantic-release computes 1.0.0, and publishing that would move npm's
latestbelow 4.6.1.git tag v4.6.1 58a02b1 # "release 4.6.1" git push origin v4.6.1Add a trusted publisher on npmjs.com for
@visual-regression-tracker/agent-codeceptjs(Settings → Trusted publishing → GitHub Actions):Visual-Regression-Trackeragent-codeceptjsrelease.ymlWithout it, the first release fails in
@semantic-release/npm(there is noNPM_TOKEN).Squash-merge with the PR title as the commit subject. The
feat!:is what makes it a major release.Why 4.6.1 fails with the Playwright helper
vrtTrackused the return value of the browser helper'ssaveScreenshot(). In CodeceptJS 3 and 4, the Playwright and Puppeteer helpers only write the file and returnundefined, so the step failed withCannot read properties of undefined (reading 'toString'). Only WebDriver returned the buffer, which is why examples-js uses WebDriver today.The agent
page.screenshot()directly. It honoursfullScreen, falling back to the helper'sfullPageScreenshots.saveScreenshot()into a temp file, which keeps CodeceptJS's full-page stitching. The file is removed afterwards.@codeceptjs/helperinstead of thecodecept_helperglobal. CodeceptJS 4 deprecates the global and drops it withnoGlobals; anoGlobals: truerun works.^5.8.0:vrtTrackpasses throughos,browser,viewport,device,customTags,diffTollerancePercent,ignoreAreas,commentandretryCount.sourceBranch(deprecatedbaselineBranchNamestill works).vrt.jsonandVRT_*variables, includingVRT_SOURCEBRANCH. With onlyrequire, everything comes from there.imageBuffer/imagePath) instead of base64 JSON, so full-page shots no longer need a raisedBODY_PARSER_JSON_LIMIT.newandunresolvedfail the step, or are only logged withenableSoftAssert. sdk-js 5.8.0'sTestStatusknowsnew,ok,unresolvedandautoApproved. Any other status, such asfailedorapproved, passes without an error there; that is an sdk-js matter.codeceptjs ^3.7.0 || ^4.0.0, optional so it isn't installed for development.engines.node >=20(CodeceptJS 4 itself needs 22.12+).files: ["dist"]replaces.npmignore.Repo setup
ci.yml: build and unit tests on Node 20, 22 and 24, on pull requests and pushes to master.release.yml, copied from agent-playwright:master;id-token: write, no token) with provenance;v-prefixed tags as in agent-playwright;conventionalcommitspreset, sofeat!:counts as breaking. It is pinned to preset 9 because preset 10 can't render notes with semantic-release 25's writer.dependabot.yml: npm weekly with limit 5, in groupsnpm-minor-patch,npm-majorandnpm-security; GitHub Actions weekly, grouped.npm pkg fixreports nothing.Verification
npm run buildandnpm run test:covpass locally on Node 24.visualregressiontracker/api:6.0.0-rc1stack (the examples-js compose file), using annpm packof this branch on the-internet.herokuapp.com:release. A run onfeaturewithVRT_SOURCEBRANCH=releaseand hard asserts passed. Both runs wereok, withbaselineBranchName: release.customTags,comment, the ignore areas,os/browser/viewport/devicewere stored on the server.VRT_*only, a partial helper config plusVRT_*, andnoGlobals: trueall passed.npx semantic-release --dry-runon this branch (branch allowed locally, npm plugin left out because OIDC exists only in Actions):v4.6.1tag: 5.0.0, with notes generated;Follow-up: Visual-Regression-Tracker/examples-js gets a draft PR that switches the CodeceptJS example back to the Playwright helper on this major.
Phase 2 additions (runtime floor, licence, release tooling)
engines.nodeis now>=22(was>=20); the CI matrix is Node 22, 24 and 26.LICENSEfile and in thelicensefield (was ISC).versionis the0.0.0-developmentplaceholder, as in the other three repos.npx(25.0.9 with the conventionalcommits preset 9.3.1) and is no longer a devDependency.npm auditnow shows only deepmerge (low, through jest-config). No patched version of it exists.v4.6.1tag simulated, the dry run gives 5.0.0. One major up from 4.6.1, this repo cannot reach 6.0.0 the way the other three can.api:6.0.0-rc1, with the examples-js #104 CodeceptJS/Playwright example on this branch and sdk-js #354 packed: 1 passed, 2 test runs created.🤖 Generated with Claude Code