This repository uses GitHub Actions to submit the Chrome extension to the Chrome Web Store when a version bump is pushed to main.
- Open the Chrome Web Store Developer Dashboard.
- Create the extension listing and complete the initial manual upload.
- Copy the extension ID from the dashboard URL.
- Copy the publisher ID used by the Chrome Web Store API.
- Open Google Cloud Console.
- Create or select a project and enable the Chrome Web Store API.
- Configure the OAuth consent screen.
- Create an OAuth 2.0 client ID for a desktop application.
- Save the client ID and client secret.
- Open the Google OAuth authorization URL with the Chrome Web Store scope.
- Sign in with the account that owns the extension.
- Approve the requested access.
- Exchange the returned authorization code for a refresh token.
The refresh token is the value used by GitHub Actions.
Add these repository secrets in GitHub: Settings -> Secrets and variables -> Actions.
CHROME_EXTENSION_IDCHROME_PUBLISHER_IDCHROME_CLIENT_IDCHROME_CLIENT_SECRETCHROME_REFRESH_TOKEN
The workflow now calls the Chrome Web Store API directly so upload failures include the API response body and a fetchStatus snapshot in the GitHub Actions log.
- Update
package.jsonto the release version. - Run
npm run test:deployto execute deterministic tests and the live Sakura Checker smoke tests. - Run
npm run zipto syncmanifest.jsonand generateextension.zip. - Merge the version bump commit into
main. - The
Deploy to Chrome Web Storeworkflow runs automatically. - If
package.jsonversion changed in the latest commit, the workflow tests, packages, uploads, and submits the extension for public review.
Pushes to main without a package.json version change are skipped successfully.
npm test: deterministic parser/API tests onlynpm run test:live: live Sakura Checker smoke tests for a small fixed ASIN set via rendered DOM extractionnpm run test:e2e-extension: Playwright Chromium extension smoke test against a real Amazon product pagenpm run test:deploy: deterministic tests plus the blocking live smoke tests used by GitHub Actionsnpm run test:browser-compare: opt-in browser comparison for local investigation; not part of deployment gating
Create a Chrome Web Store upload zip locally with:
npm install
npm run zipThe command syncs the manifest version and writes extension.zip to the repository root. Upload that zip when you need to submit the extension manually.
- The initial store registration must be done manually.
- The workflow packages only extension runtime files and excludes tests and debug pages.
- Store review itself is handled by Google after the submission is uploaded.