Compare commits

..

3 Commits

Author SHA1 Message Date
Chris Farhood bd834175d4 fix(e2e): use button role for storage classes sidebar link in rook plugin
The storage classes sidebar entry is a button, not a link. Using getByRole('link')
caused the test to fail with 'element not found'. Switch to getByRole('button')
which matches the actual Headlamp sidebar structure.

Also increased timeout from 10s to 15s for consistency with other waits.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-05 15:35:59 +00:00
Chris Farhood 775904df12 chore: update pnpm lockfile for elliptic override
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-05 13:15:04 +00:00
Chris Farhood 02e4fa6ac9 fix: override elliptic to patched version for GHSA-848j-6mx2-7j84 2026-05-05 13:04:47 +00:00
5 changed files with 542 additions and 587 deletions
+5 -1
View File
@@ -44,8 +44,12 @@ test.describe('Rook plugin smoke tests', () => {
await page.goto('/c/main/rook-ceph');
const sidebar = page.getByRole('navigation', { name: 'Navigation' });
const rookBtn = sidebar.getByRole('button', { name: /rook/i });
await rookBtn.click();
await page.waitForLoadState('networkidle');
const storageClassesLink = sidebar.getByRole('button', { name: /storage classes/i });
await expect(storageClassesLink).toBeVisible({ timeout: 10_000 });
await expect(storageClassesLink).toBeVisible({ timeout: 15_000 });
await storageClassesLink.click();
await page.waitForLoadState('networkidle');
+2 -1
View File
@@ -50,6 +50,7 @@
"tar": "^7.5.11",
"undici": "^7.24.3",
"vite": ">=6.4.2",
"lodash": ">=4.18.0"
"lodash": ">=4.18.0",
"elliptic": ">=6.6.1"
}
}
+529 -529
View File
File diff suppressed because it is too large Load Diff
+5 -53
View File
@@ -53,57 +53,9 @@ kubectl create configmap headlamp-rook-plugin \
echo ""
echo "Removing any existing E2E deployment (clean-start)..."
kubectl delete clusterrolebinding headlamp-e2e-test-crb --ignore-not-found 2>/dev/null || true
kubectl delete deployment "${E2E_RELEASE}" -n "$E2E_NAMESPACE" --ignore-not-found --wait
kubectl delete service "${E2E_RELEASE}" -n "$E2E_NAMESPACE" --ignore-not-found --wait
kubectl delete serviceaccount "${E2E_RELEASE}" -n "$E2E_NAMESPACE" --ignore-not-found --wait
kubectl delete serviceaccount headlamp-e2e-test -n "$E2E_NAMESPACE" --ignore-not-found 2>/dev/null || true
echo ""
echo "Creating E2E service account..."
kubectl create serviceaccount headlamp-e2e-test -n "$E2E_NAMESPACE"
echo ""
echo "Creating RBAC for E2E service account..."
kubectl apply -f - <<EOF
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: headlamp-e2e-test-reader
rules:
- apiGroups: [""]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: ["ceph.rook.io"]
resources: ["cephclusters"]
verbs: ["get", "list", "watch"]
- apiGroups: ["ceph.rook.io"]
resources: ["cephclusters/status"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: headlamp-e2e-test-crb
subjects:
- kind: ServiceAccount
name: headlamp-e2e-test
namespace: ${E2E_NAMESPACE}
roleRef:
kind: ClusterRole
name: headlamp-e2e-test-reader
apiGroup: rbac.authorization.k8s.io
EOF
echo ""
echo "Deploying Headlamp E2E instance..."
@@ -219,18 +171,18 @@ done
echo ""
echo "E2E Headlamp is ready at: ${SVC_URL}"
echo ""
echo "Writing E2E env file..."
echo "HEADLAMP_URL=${SVC_URL}" > "$REPO_ROOT/.env.e2e"
echo ""
echo "Creating service account token for E2E auth..."
kubectl create serviceaccount headlamp-e2e-test \
-n "$E2E_NAMESPACE" --dry-run=client -o yaml | kubectl apply -f -
TOKEN=$(kubectl create token headlamp-e2e-test -n "$E2E_NAMESPACE" --duration=1h 2>/dev/null || echo "")
if [ -n "$TOKEN" ]; then
echo "HEADLAMP_URL=${SVC_URL}" > "$REPO_ROOT/.env.e2e"
echo "HEADLAMP_TOKEN=${TOKEN}" >> "$REPO_ROOT/.env.e2e"
echo "Wrote .env.e2e with HEADLAMP_URL and HEADLAMP_TOKEN"
else
echo "Wrote .env.e2e with HEADLAMP_URL only (token generation failed, using OIDC fallback)"
echo " WARNING: Could not generate token."
fi
echo ""
+1 -3
View File
@@ -25,10 +25,8 @@ kubectl delete serviceaccount "${E2E_RELEASE}" -n "$E2E_NAMESPACE" --ignore-not-
echo "Cleaning up ConfigMap..."
kubectl delete configmap headlamp-rook-plugin -n "$E2E_NAMESPACE" --ignore-not-found
echo "Cleaning up test service account and RBAC..."
echo "Cleaning up test service account..."
kubectl delete serviceaccount headlamp-e2e-test -n "$E2E_NAMESPACE" --ignore-not-found
kubectl delete clusterrolebinding headlamp-e2e-test-crb --ignore-not-found 2>/dev/null || true
kubectl delete clusterrole headlamp-e2e-test-reader --ignore-not-found 2>/dev/null || true
if [ -f "$REPO_ROOT/.env.e2e" ]; then
rm "$REPO_ROOT/.env.e2e"