mirror of
https://github.com/quay/quay.git
synced 2026-01-27 18:42:52 +03:00
* test(web): migrate logout Cypress test to Playwright Uses unique temporary users per test to avoid session invalidation conflicts when running in parallel. Quay's signout endpoint invalidates all sessions for a user, which would break parallel tests sharing users. Also documents the session-destructive test pattern in MIGRATION.md. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * test(web): migrate mirroring Cypress test to Playwright Migrates web/cypress/e2e/mirroring.cy.ts to Playwright following the MIGRATION.md guide. Consolidates 18 Cypress tests into 5 Playwright tests using real API calls instead of mocks. Changes: - Add mirroring API utilities to client.ts (changeRepositoryState, createMirrorConfig, getMirrorConfig, updateMirrorConfig, triggerMirrorSync, cancelMirrorSync) - Create mirroring.spec.ts with 5 consolidated tests covering: - State warning and form visibility - New mirror configuration lifecycle - Existing mirror configuration management - Sync operations - Error handling (only mock used for 400 error scenario) - Update MIGRATION.md checklist (8/54, 15%) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * test(web): add TestApi fixture with auto-cleanup for Playwright tests Introduce a TestApi class that wraps ApiClient and automatically tracks created resources for cleanup after each test. This eliminates the need for manual beforeEach/afterEach cleanup patterns and ensures resources are always cleaned up even when tests fail. Changes: - Add TestApi class to fixtures.ts with methods for creating orgs, repos, teams, robots, and prototypes with auto-cleanup - Add api and superuserApi fixtures that provide TestApi instances - Migrate all committed Playwright tests to use the new api fixture - Update MIGRATION.md with documentation for the new pattern The api fixture provides: - api.organization(prefix?) - creates org with unique name - api.repository(namespace?, prefix?, visibility?) - creates repo - api.team(orgName, prefix?, role?) - creates team - api.robot(orgName, prefix?, description?) - creates robot - api.prototype(orgName, role, delegate, activatingUser?) - creates default permission - api.setMirrorState(namespace, repoName) - sets repo to MIRROR state - api.raw - access underlying ApiClient for non-tracked operations Resources are cleaned up in reverse order (LIFO) after each test. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * test(web): remove migrated tests Signed-off-by: Brady Pratt <bpratt@redhat.com> * test(web): auto-skip Playwright tests based on @feature: tags Adds an auto-fixture to fixtures.ts that automatically skips tests when their @feature:X tags reference disabled Quay features. This eliminates duplication between tags and manual test.skip() calls. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix(web): set axios baseURL at module level for all routes (PROJQUAY-0000) Previously axios baseURL was only set inside StandaloneMain component, causing requests from /signin and other auth routes to go to the wrong URL (localhost:9000 instead of localhost:8080). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * test(web): use cy.session() for Cypress authentication Replace manual CSRF token + loginByCSRF pattern with cy.session() for proper session handling. Fixes race condition where React app made API calls before Cypress login completed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * test(web): fix notification drawer test flakiness with toPass polling Use Playwright's toPass to poll for notification appearance instead of a single assertion. The backend may take time to process push notifications, so reload and retry until the notification is visible. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Signed-off-by: Brady Pratt <bpratt@redhat.com> Co-authored-by: Claude <noreply@anthropic.com>