choo121600 opened a new pull request, #62913:
URL: https://github.com/apache/airflow/pull/62913
This PR stabilizes the backfill E2E tests, which were intermittently failing
due to race conditions, non-deterministic date calculations, and brittle CSS
selectors.
## Changes
### Flaky test root causes addressed
- **Relative dates → fixed dates**: `getPastDate(n)` produced different
values depending on execution time, causing non-deterministic backfill ranges.
Replaced with `FIXED_DATES` constants.
- **Race with scheduler**: Control tests (pause/resume/cancel) failed when
the scheduler completed the backfill before the test had a chance to interact
with it. The tests now pause the backfill immediately after creation via the
API to guarantee the controls remain visible.
- **Brittle locators**: Replaced brittle CSS attribute
selectors(`button[aria-label="..."]`, `table`, `[role="menuitem"]`) with
Playwright recommended locators (`getByTestId`, `getByRole`, `getByText`).
- **`waitForTimeout` removal**: Eliminated hardcoded `waitForTimeout(500)`
calls in favor of proper Playwright assertions and `waitForResponse`.
### Test setup/teardown improvements
- Added API helpers (`cancelAllActiveBackfillsViaApi`,
`createBackfillViaApi`, `waitForBackfillComplete`,
`waitForNoActiveBackfillViaApi`) for reliable setup and cleanup that don't
depend on UI state.
- `createBackfill` (UI) now returns the backfill ID by intercepting the POST
response, enabling precise completion polling.
- `beforeEach`/`afterEach` in the controls block ensures a clean state
between tests.
### Code cleanup
- Consolidated 3 near-identical verification tests into a `for...of` loop.
- Unified reprocess behavior types via `REPROCESS_API_TO_UI` mapping.
- Separated pause/unpause into distinct locators with `.or()` composition.
- Removed unused methods and types.
## What is still tested through the UI
- Backfill creation dialog (4 times: 3 in `beforeAll` + 1 in cancel test)
- Date range validation error message
- Backfill table data verification (dates, reprocess behavior, timestamps)
- Table column filter toggle (hide/show)
- Pause/resume button toggle cycle
- Cancel button functionality
- Cancelled backfill state verification in table
API is used **only** for setup/teardown and race condition prevention, never
as a substitute for UI interaction under test.
<!-- SPDX-License-Identifier: Apache-2.0
https://www.apache.org/licenses/LICENSE-2.0 -->
<!--
Thank you for contributing!
Please provide above a brief description of the changes made in this pull
request.
Write a good git commit message following this guide:
http://chris.beams.io/posts/git-commit/
Please make sure that your code changes are covered with tests.
And in case of new features or big changes remember to adjust the
documentation.
Feel free to ping (in general) for the review if you do not see reaction for
a few days
(72 Hours is the minimum reaction time you can expect from volunteers) - we
sometimes miss notifications.
In case of an existing issue, reference it using one of the following:
* closes: #ISSUE
* related: #ISSUE
-->
---
##### Was generative AI tooling used to co-author this PR?
<!--
If generative AI tooling has been used in the process of authoring this PR,
please
change below checkbox to `[X]` followed by the name of the tool, uncomment
the "Generated-by".
-->
- [X] Yes (please specify the tool below)
claude
<!--
Generated-by: [Tool Name] following [the
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
-->
---
* Read the **[Pull Request
Guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-guidelines)**
for more information. Note: commit author/co-author name and email in commits
become permanently public when merged.
* For fundamental code changes, an Airflow Improvement Proposal
([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals))
is needed.
* When adding dependency, check compliance with the [ASF 3rd Party License
Policy](https://www.apache.org/legal/resolved.html#category-x).
* For significant user-facing changes create newsfragment:
`{pr_number}.significant.rst` or `{issue_number}.significant.rst`, in
[airflow-core/newsfragments](https://github.com/apache/airflow/tree/main/airflow-core/newsfragments).
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]