186f9ef380
Fix getNamespaces() to skip cluster-scoped resources (Namespace: "") that caused Router.createRouteURL to throw TypeError on the Namespaces page. Add Playwright E2E smoke tests with Authentik OIDC auth for CI and K8s token fallback for local dev. Add Gitea Actions E2E workflow, vitest unit test infrastructure, and test-utils fixtures. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
59 lines
2.6 KiB
Markdown
59 lines
2.6 KiB
Markdown
# E2E Smoke Tests
|
|
|
|
Playwright-based smoke tests that validate the Polaris plugin against a live Headlamp deployment.
|
|
|
|
## CI
|
|
|
|
E2E tests run automatically in Gitea Actions on pushes to `main` and pull requests. The workflow (`.gitea/workflows/e2e.yaml`) uses Authentik OIDC for authentication via repo secrets.
|
|
|
|
### Required Gitea secrets
|
|
|
|
| Secret | Description |
|
|
| -------------------- | -------------------------------------------------------------- |
|
|
| `AUTHENTIK_USERNAME` | Authentik email or username for a CI user with Headlamp access |
|
|
| `AUTHENTIK_PASSWORD` | Password for that user |
|
|
|
|
## Running Locally
|
|
|
|
### Option 1: OIDC via Authentik (same as CI)
|
|
|
|
```bash
|
|
AUTHENTIK_USERNAME=you@example.com AUTHENTIK_PASSWORD=... npm run e2e
|
|
```
|
|
|
|
The default base URL is `https://headlamp.animaniacs.farh.net`. Override with `HEADLAMP_URL` if needed.
|
|
|
|
### Option 2: K8s bearer token (port-forward)
|
|
|
|
```bash
|
|
kubectl port-forward -n kube-system svc/headlamp 4466:80
|
|
export HEADLAMP_TOKEN=$(kubectl create token headlamp -n kube-system)
|
|
HEADLAMP_URL=http://localhost:4466 npm run e2e
|
|
```
|
|
|
|
Or in headed mode (opens a browser window):
|
|
|
|
```bash
|
|
HEADLAMP_URL=http://localhost:4466 npm run e2e:headed
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
| Variable | Required | Default | Description |
|
|
| -------------------- | -------- | -------------------------------------- | --------------------------------------- |
|
|
| `HEADLAMP_URL` | No | `https://headlamp.animaniacs.farh.net` | Base URL of the Headlamp instance |
|
|
| `AUTHENTIK_USERNAME` | OIDC | — | Authentik email/username |
|
|
| `AUTHENTIK_PASSWORD` | OIDC | — | Authentik password |
|
|
| `HEADLAMP_TOKEN` | Token | — | Kubernetes bearer token (fallback auth) |
|
|
|
|
Set either `AUTHENTIK_USERNAME` + `AUTHENTIK_PASSWORD` or `HEADLAMP_TOKEN`. OIDC takes priority if both are set.
|
|
|
|
## What the Tests Validate
|
|
|
|
- **Sidebar entry** — The Polaris sidebar item appears after login
|
|
- **Overview page** — Cluster score and check distribution render correctly
|
|
- **Namespaces page** — Table of namespaces loads with clickable links
|
|
- **Namespace detail** — Clicking a namespace shows its score and resource table
|
|
|
|
These are smoke tests against real cluster data. They verify the plugin loads and renders without errors, not specific data values.
|