Fixing Skipped Tests
This skill outlines the workflow for fixing skipped tests in the DevTools codebase, typically given a Chromium bug link (e.g., crbug.com/1234567).
Workflow
Extract the Bug ID
- The input is typically a bug link like
crbug.com/<bugid>. Extract the<bugid>from the link.
- The input is typically a bug link like
Create a Branch
- Create a new branch named
fixed-<bugid>. - Ensure you use the instructions from the
devtools-version-controlskill to create and switch branches appropriately.
- Create a new branch named
Search for the Skipped Tests
- Search the
test/TestExpectationsfile for the<bugid>to find skipped tests. - Tests are no longer skipped using
.skipin the code, but rather by having a[ Skip ]expectation intest/TestExpectations.
- Search the
Iterative Fix Process
- Step 1: Remove the
[ Skip ]expectation for one of the tests associated with the bug intest/TestExpectations(or change it to[ Pass Failure ]if you are investigating flakiness). - Step 2: Re-run the specific test using its exact test ID (e.g.,
npm run test path/to/foo.test.ts:test_name) using the guidelines from thedevtools-verificationskill. If you are dealing with flaky tests, you can use the--repeat=xflag (e.g.npm run test -- --repeat=20 path/to/foo.test.ts:test_name) to run the test multiple times to reproduce the flakiness. This flag works for both E2E and unit tests. - Step 3: Analyze the test failure and make the necessary fixes to the code or the test itself.
- Step 4: Re-run the test to ensure the fix is correct.
- Step 5: Remove the
[crbug.com/<bugid>]prefix from the test name string in the code if it is present. - Step 6: Remove any comments directly above the test in the code that explain the reason why the test was skipped (e.g.,
// TODO(crbug...): Flaky). - Step 7: Apply the fix to the remaining tests, un-skipping them one by one or in batches by modifying
test/TestExpectations, and verifying until all are passing.
- Step 1: Remove the
Verify Full Build
- Before finishing, run the full verification process (TypeScript checks, linters, full test run) as required by the repository best practices.