The UI-based deleteOrg and deleteUser functions fail due to
form-fetch-action issues. Revert these to API calls while keeping
the working UI-based createRepo/deleteRepo functions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Declare E2E_USER, E2E_PASSWORD and E2E_URL as string in ProcessEnv so
non-null assertions are no longer needed throughout the e2e tests.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Accept optional username/password in the login utility so the register
test can use it for the newly-created account instead of duplicating
the sign-in steps.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use browser-based user actions for test setup and cleanup instead of
direct API/fetch calls, making tests exercise the same code paths as
real users.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add ENABLE_CAPTCHA=false to CI app.ini so the server starts with
CAPTCHA disabled instead of relying on env var in test script
- Retry on 502/503 in addition to 500 in apiRetry helper
- Fix typo: workarkound → workaround
- Add comment about section-unaware INI parsing in test-e2e.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The fomantic dropdown JS does not reliably initialize on CI headless
Chromium, making dropdown-based Sign Out impossible. Use clearCookies
to destroy the session and verify logout state instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The link-action handler does an async fetch POST then a form-based
redirect chain which can be slow on CI. Wait for the /user/logout
response to confirm session destruction, then navigate to verify.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace JS-dependent getByLabel (aria-label set by Fomantic init) with
getByTitle targeting the avatar's server-rendered title attribute, scoped
to the navigation bar. Extract reusable clickDropdownItem helper.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The dropdown already gets aria-label from data-tooltip-content via
the ARIA dropdown patch, so we can open it with getByLabel and then
click Sign Out normally.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The dispatchEvent('click') on Sign Out triggers a navigation. Wait
for it to complete before checking for the Sign In link.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Import env from node:process, remove the user argument from login()
and read E2E_USER and E2E_PASSWORD directly from the environment.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove login_user helper and LOGIN_PASSWORD constant, pass E2E_USER
and E2E_PASSWORD from the test script to playwright via env vars.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove the Go test harness that compiled test binaries and bootstrapped
a full Gitea server with fixtures. Replace with a bash script that runs
Playwright directly against an already-running Gitea instance.
- Remove Go e2e test files (e2e_test.go, utils_e2e_test.go)
- Add tools/test-e2e.sh that detects server URL, creates e2e user, runs Playwright
- Simplify Makefile to single test-e2e target
- Rewrite playwright.config.ts with chromium-only, no file outputs
- Rewrite tests using semantic Playwright locators (getByLabel, getByRole, getByText)
- Add login/logout utilities in tests/e2e/utils.ts
- Add CI workflow for e2e tests (.github/workflows/pull-e2e-tests.yml)
- Install only chromium in playwright install step
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>