Repository navigation
Conversation
…n hook over HTTP, and publish the probe URL on free runs
… tables the product declares in suite.json seed_tables, refusing enum values MySQL would
…gistered stubs instead of the network
…hat is attached even when the product does not schedule it
…d document the seed endpoint in SUITE.md
…veats that mail and cron can be driven through the seed endpoint
…04 and Playwright cannot install Chromium there
… seeding specs stop skipping on CI
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.
What this does
Lets a spec put a disposable WordPress site into a state a click cannot reach, and read what the site tried to do in response, over HTTP on any engine. That is what payment webhooks, cron handlers, subscription rows and email specs need. Until now the PR gate asked for a spec for these changes and the harness could not write one, so the only way out was the
qa-waivedlabel.A new QA-only mu-plugin,
tgqa-seed.php, is staged next to the probe and answers to the same per-run token. It has five operations:optionscronseed_cron_hooks, in the request. Reportsscheduledinstead of requiring it.rowsseed_tables. Refuses undeclared tables, unknown columns, enum values MySQL would refuse, and unconditioned deletes.stubswp_remote_*(PayPal). An unstubbed call to a stubbed host is refused and logged, never sent.mailwp_mail()is asked to send instead of sending it. Off until a spec turns it on.A product opts in with
seed_tablesandseed_cron_hooksin.themegrill-qa/suite.json;boot-wp.mjsandrun-suite.mjsstage them. Free runs now exportTGQA_PROBE_URLtoo (it was pro-only).packages/core/mail.jsis a dependency-free client for the mail operation. SUITE.md §2c documents all of it, including what Playground gets wrong.Two workflow fixes found by running it in Actions
ubuntu-24.04.ubuntu-latestis now Ubuntu 26.04, which Playwright 1.57 cannot install Chromium on, so every product's suite would fail before running a spec.suite.ymlexports the seed endpoint's URL from the boot step. Without it every seeding spec skipped, and the run could go green with nothing tested.Engine differences it works around, each measured on Playground
rowschecks enum values against the real column.ON DELETE CASCADEdoes not fire, so seeding helpers delete children first.GET_LOCK()answers the string1=1, which MySQL-written code reads as "not acquired". The mu-plugin rewrites it to1on SQLite only. The race a lock guards is therefore not testable there, and SUITE.md says so.Verified
Used by 22 specs on UR (payment retry, Stripe and PayPal webhooks, a renewal invoice, chargebacks, the missed-payment backfill, and email). They pass in GitHub Actions against this branch: 59 of 62 tests on the last full run, every one of those specs green (themegrill/user-registration#1571). The two failures are unrelated UR tests. Each spec also fails on assertions when the code it guards is reverted.
Not verified, and for the reviewer
--engine wp-envstages no mu-plugins, so none of this runs there.pro-suite.ymlgot the runner pin only; nothing here has run on a pro repo.boot-wp.mjsexits 0 when a stale Playground already holds the port, then hands out a token the old server does not know, which shows up as 403s from the seed endpoint. Found, not fixed.versionbump in.claude-plugin/marketplace.jsonis included, so local plugin users will not pick this up until one is added.🤖 Generated with Claude Code