Public: anyone can read this; the crew can change it.

The claim, everyday-account and first-admin passkey notes draw §5's muted text and error-note, and .passkey-note leaves their markup #4376

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

scout/forge:scout/4370-the-claim-everyday-account-and-first-adm → main 3 commits fork

  • Merged. scout/4370-the-claim-everyday-account-and-first-adm was merged into main as 13a56e5.

Review

Sign in to review this change.
7 files changed +13 −5
src/web/pages/claim.ts +1 −1
@@ -198,7 +198,7 @@ function claimForm(
198198 Or skip the password: a passkey signs you in with a fingerprint,
199199 face or device PIN. It needs an email address above.
200200 </p>
201 <p class="passkey-note mb" id="passkey-make-note" role="alert">${errors.passkey ?? ""}</p>
201 <p class="${errors.passkey ? "error-note" : "muted small"} mb" id="passkey-make-note" data-fail="error-note" role="${errors.passkey ? "alert" : "status"}">${errors.passkey ?? ""}</p>
202202 <button type="button" id="passkey-make" class="btn" data-variant="outline" data-options="/claim/options" data-needs-email>Claim with a passkey instead</button>
203203 </div>
204204 </form>`,
src/web/pages/everyday.ts +1 −1
@@ -108,7 +108,7 @@ function everydayFields(ctx: Ctx, user: User, offerKeep: boolean): Html {
108108 It signs in with a passkey of its own: a fingerprint, face or
109109 device PIN. There is no password.
110110 </p>
111 <p class="passkey-note" id="passkey-make-note" role="alert"></p>
111 <p class="muted small" id="passkey-make-note" data-fail="error-note" role="status"></p>
112112 <noscript><p class="muted small">Making the passkey needs JavaScript.</p></noscript>
113113 <div class="form-actions">
114114 <button type="submit" id="passkey-make" class="btn" data-variant="primary" data-options="/settings/everyday/options">Make it with a passkey</button>
src/web/pages/first-admin.ts +1 −1
@@ -78,7 +78,7 @@ function form(values: Values, errors: Errors): Html {
7878 You sign in with a passkey: a fingerprint, face or device PIN.
7979 There is no password to remember.
8080 </p>
81 <p class="passkey-note mb" id="passkey-make-note" role="alert">${errors.passkey ?? ""}</p>
81 <p class="${errors.passkey ? "error-note" : "muted small"} mb" id="passkey-make-note" data-fail="error-note" role="${errors.passkey ? "alert" : "status"}">${errors.passkey ?? ""}</p>
8282 <noscript><p class="muted small">Making the passkey needs JavaScript.</p></noscript>
8383 <div class="form-actions">
8484 <button type="submit" id="passkey-make" class="btn" data-variant="primary" data-options="/first-admin/options">Make the admin with a passkey</button>
test/everyday.test.ts +2
@@ -182,6 +182,8 @@ describe("the everyday account", () => {
182182 const root = await signIn("ada");
183183 const home = await page(root, "/");
184184 expect(home).toContain('id="passkey-make"');
185 expect(home).not.toContain("passkey-note");
186 expect(home).toContain('<p class="muted small" id="passkey-make-note" data-fail="error-note" role="status"></p>');
185187 expect(home).not.toContain('name="password"');
186188 const res = await make(root, {
187189 username: "ada-me",
test/first-admin.test.ts +3
@@ -298,6 +298,9 @@ describe("a person: /first-admin with a passkey", () => {
298298 redirect: "manual",
299299 });
300300 expect(res.status).toBe(422);
301 const refusedPage = await res.text();
302 expect(refusedPage).not.toContain("passkey-note");
303 expect(refusedPage).toMatch(/<p class="error-note mb" id="passkey-make-note" data-fail="error-note" role="alert">[^<]+<\/p>/);
301304 expect(getUserByName(app.db, "ada")).toBeUndefined();
302305 expect(readFirstAdmin(app.db, code)).toBe("ok");
303306 });
test/web.test.ts +1 −1
@@ -459,7 +459,7 @@ describe("web pages end to end", () => {
459459 expect(changeCapacity(app, ada, "cells.egress", "report").ok).toBe(true);
460460 try {
461461 const text = await (await fetch(base, { headers: { cookie } })).text();
462 expect(text).not.toContain("error-note");
462 expect(text).not.toMatch(/class="[^"]*\berror-note/);
463463 expect(text).not.toContain("Egress is reported");
464464 } finally {
465465 changeCapacity(app, ada, "cells.egress", "enforce");

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs