tae-conversion: add host-side toolchain for Fenix ui/efficiency conve… - #424
Open
jjSDET wants to merge 1 commit into
Open
tae-conversion: add host-side toolchain for Fenix ui/efficiency conve…#424jjSDET wants to merge 1 commit into
jjSDET wants to merge 1 commit into
Conversation
…rsions The eff* toolchain that closes the AI-assisted conversion loop for Fenix UI tests moving onto the ui/efficiency framework: pick a candidate, scaffold from the legacy test, static pre-flight, build and run on a device, read a structured verdict, then file/commit/submit. These run on the engineer's machine. The agent's sandbox cannot reach a device, Bugzilla, or Phabricator, so effwatch.sh bridges the two by polling a queue directory and running only a fixed, whitelisted command. Layout: - tools/ 11 tools plus .eff.env.example and the done-ledger - docs/ CONVERSION-LOOP, CONVERSION-LESSONS, HARNESS-GOTCHAS - conversion-runs/ queue protocol and the prioritized candidate pool Deliberately not included: - effpretty and effview ship in-tree under ui/efficiency/devtools/ — they are device-side dump tools, so in-tree is their single source of truth. - The end-of-day project-tracker runbook. It is specific to one team's Sheet, Slack channel, and Jira tree rather than to this toolchain, and this repo is public. Scrubbed for publication: - effbug.py took a hardcoded tracking epic; now reads EFF_EPIC and omits the note when unset. Example assignee genericized. - effsubmit.py had hardcoded default reviewers; now defaults to EFF_REVIEWERS and warns when neither that nor --reviewers is set. - effloop.sh and effwatch.sh defaulted their output root to a personal scratch directory; now default to tae-conversion/conversion-runs. - .gitignore covers tools/.eff.env (holds a Bugzilla API key) and the disposable run artifacts. The done-ledger was regenerated against current mozilla-central: 72 of 174 smoke tests converted, 67 annotated with @converted and 5 in flight. Verified: every tool byte-compiles, and effnext, effcheck, and reconcile_conversion were run against a real Fenix checkout from this layout.
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.
tae-conversion: host-side toolchain for Fenix ui/efficiency conversions
Branch:
tae-conversion-toolchain→mainRepo:
mozilla-mobile/testops-toolsWhat
Adds
tae-conversion/— theeff*toolchain that closes the AI-assisted conversionloop for Fenix UI tests moving onto the
ui/efficiencyframework:pick a candidate → scaffold from the legacy test → static pre-flight → build/run on a
device → read a structured verdict → file, commit, submit.
Why here
These tools run on the engineer's machine and talk to a device, Bugzilla, and
Phabricator. The agent's sandbox can reach none of that, so
effwatch.shbridges thetwo: it polls a queue directory and runs only a fixed, whitelisted command — never
arbitrary text from a request file.
That makes this infra tooling, not something to ship inside an agent plugin. The
companion PR to
mozilla/firefox-aidev-pluginsadds the threetaeskills that drivethese tools by name.
Deliberately excluded
effprettyandeffviewship in-tree underui/efficiency/devtools/. They'redevice-side dump tools, so in-tree is their single source of truth — duplicating them
here would create a sync problem.
Slack channel, and Jira tree rather than to this toolchain, and it carried a live
Sheet ID. This repo is public. The one genuinely reusable part — refreshing the
done-ledger with
reconcile_conversion.py— is documented in the README instead.Scrubbed for publication
effbug.pyhardcoded a tracking epic in every filed bug's footerEFF_EPIC; omits the note when unseteffbug.pyexample used a real assignee addresseffsubmit.pyhardcoded default reviewersEFF_REVIEWERS, warns when unseteffloop.sh/effwatch.shwrote to a personal scratch directorytae-conversion/conversion-runs.gitignorecoverstools/.eff.envplus disposable run artifactsConfirmed no API keys, tokens, absolute home paths, Sheet IDs, or Slack channel IDs in
the committed tree.
Freshness
Sources were taken from the live working copies, not an earlier staging snapshot that
had drifted (
effloop.shby 129 lines,effbug.pyby 20,effsubmit.pyby 7;HARNESS-GOTCHAS.mdby 126 andCONVERSION-LESSONS.mdby 99).The done-ledger was regenerated against current mozilla-central: 72 of 174 smoke tests
converted (67 annotated with
@Converted, 5 in flight). The previously staged ledgerwas four rows stale.
docs/HARNESS-GOTCHAS.mdcarries A1–A15 and B1–B11 and notes explicitly that thein-tree
docs/gotchas.mdcurrently stops at A8/B8 — this copy runs ahead while entriesare still being confirmed.
Verification
bash -n.effnext.py,effcheck.py, andreconcile_conversion.pywere run from this layoutagainst a real Fenix checkout.
effcheckreturns[PASS] statically cleanon a landedconverted test;
effnextcorrectly reports 166 pooled / 89 done / 95 pending.effloop/effwatch/effbug/effgit/effsubmit, which need aconnected device, a Bugzilla key, or moz-phab.