Live test: check highlighting, settings pages, view transitions and base permission (#33)
Altug's feedback rounds landed in #23 and #28; the live test now confirms on diffinery.com that workflow files are syntax highlighted with both themes, Settings -> Appearance and the notifications page's settings link exist, pages opt in to view transitions (and respect reduced motion), visibility "internal" is refused, and organizations report their base permission. Claude-Session: https://claude.ai/code/session_01QMFviVKD61QaDPxdrh7C3f Co-authored-by: Claude <noreply@anthropic.com>
Canberk Demirci authored · GitHub committed signed1 parent 3dce95ccommit 7bbb8ed95a4422b0739820e8b997fedcdb572481Browse files
1 file changed+23−1
modified.github/workflows/live-test.yml+23−1View file
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | name: Live test |
| 2 | 2 | |
| 3 | 3 | # End-to-end checks against the real diffinery.com after each deploy: email |
| 4 | -# sending, hosted Actions jobs in Cloudflare Containers (with Docker builds and services), the container registry, agent sandboxes, | |
| 4 | +# sending, web UI features (syntax highlighting, settings pages, view transitions), hosted Actions jobs in Cloudflare Containers (with Docker builds and services), the container registry, agent sandboxes, | |
| 5 | 5 | # webhooks, scheduled workflows, Git LFS, and pull requests (test merge commits, pull_request_target and the merge |
| 6 | 6 | # queue). Each run works in a throwaway private repository that it |
| 7 | 7 | # deletes at the end. |
| @@ -241,6 +241,28 @@ | ||
| 241 | 241 | git push -q "https://x-token:${TOKEN}@${DIFFINERY#https://}/$OWNER/$REPO.git" main |
| 242 | 242 | git lfs ls-files |
| 243 | 243 | |
| 244 | + - name: Web UI features (highlighting, settings pages, view transitions, base permission) | |
| 245 | + if: steps.token.outputs.skip != 'true' | |
| 246 | + run: | | |
| 247 | + set -euo pipefail | |
| 248 | + page() { curl -fsS "$DIFFINERY$1" -H "Authorization: Bearer $TOKEN"; } | |
| 249 | + has() { grep -qF -- "$2" <<<"$1" || { echo "::error::$3"; exit 1; }; } | |
| 250 | + html=$(page "/$OWNER/$REPO/blob/main/.github/workflows/ci.yml") | |
| 251 | + has "$html" '<td class="sh">' "the workflow file is not syntax highlighted" | |
| 252 | + has "$html" "--shiki-dark" "highlighted code has no dark theme colours" | |
| 253 | + has "$html" "@view-transition{navigation:auto}" "pages don't opt in to view transitions" | |
| 254 | + has "$html" "prefers-reduced-motion:no-preference" "view transitions ignore reduced motion" | |
| 255 | + has "$(page /settings/appearance)" 'name="appearance"' "Settings -> Appearance has no theme choice" | |
| 256 | + has "$(page /notifications)" 'href="/settings/notifications"' "the notifications page doesn't link to notification settings" | |
| 257 | + code=$(curl -sS -o /tmp/out -w '%{http_code}' -X POST "$DIFFINERY/api/v3/user/repos" -H "Authorization: Bearer $TOKEN" -H "content-type: application/json" --data "{\"name\":\"$REPO-internal\",\"visibility\":\"internal\"}") | |
| 258 | + [ "$code" = 422 ] || { echo "::error::visibility internal got $code, expected 422"; curl -sS -o /dev/null -X DELETE "$DIFFINERY/api/v3/repos/$OWNER/$REPO-internal" -H "Authorization: Bearer $TOKEN"; exit 1; } | |
| 259 | + org=$(page /api/v3/user/orgs | jq -r '.[0].login // empty') | |
| 260 | + if [ -n "$org" ]; then | |
| 261 | + perm=$(page "/api/v3/orgs/$org" | jq -r '.default_repository_permission // empty') | |
| 262 | + case "$perm" in none|read|write|admin) echo "$org's base permission: $perm" ;; *) echo "::error::GET /orgs/$org has no default_repository_permission"; exit 1 ;; esac | |
| 263 | + fi | |
| 264 | + echo "highlighting, Appearance, notification settings link, view transitions and visibility checks passed" | |
| 265 | + | |
| 244 | 266 | - name: Hosted Actions jobs (and Docker) run in Cloudflare Containers |
| 245 | 267 | if: steps.token.outputs.skip != 'true' |
| 246 | 268 | run: | |