Skip to content

Commit 8fbfe09

Browse files
yyodsclaude
andcommitted
[red] keep the real-hardware board photo on candidate /flash
The user keeps the actual Waveshare ESP32-S3-LCD-1.47B photograph on the flash page: it is real hardware, even though the shot is the historical v0.5.0 one. Pin the exact-board spotlight — heading, real-hardware framing, photo asset, and v0.5.0 caption unchanged — to render whenever the selected release offers the waveshare-esp32-s3-lcd-147b profile, including the access-controlled candidate. In candidate mode the eyebrow must use hardware-qualification-pending wording instead of 'Validated display board'; qualified-public keeps the validated framing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016KVSKkd7KUMHqKXDhPXTj5 Signed-off-by: Viwat Vchirawongkwin <viwat.v@chula.ac.th>
1 parent 8c799a9 commit 8fbfe09

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

‎tools/web/src/test/flash-page-release-copy.test.tsx‎

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,26 @@ function expectFiveProfileFlashPageCopy() {
149149
expect(picoProfile).toHaveTextContent(/BOOTSEL/i);
150150
expect(picoProfile).toHaveTextContent(/not a Web Serial flow/i);
151151

152+
// The real-hardware exact-board photo spotlight stays visible whenever the
153+
// Waveshare profile is offered by the selected release; the photograph is
154+
// deliberately the historical v0.5.0 shot of the actual board.
155+
const boardSection = screen
156+
.getByRole("heading", { name: "Waveshare ESP32-S3-LCD-1.47B" })
157+
.closest("section");
158+
expect(boardSection).toBeDefined();
159+
expect(boardSection).toHaveTextContent(/real hardware.*not a render/i);
160+
const boardPhoto = screen.getByRole("img", {
161+
name: "Actual Waveshare ESP32-S3-LCD-1.47B displaying the PyBLE v0.5.0 boot splash and app QR",
162+
});
163+
expect(boardSection).toContainElement(boardPhoto);
164+
expect(boardPhoto).toHaveAttribute(
165+
"src",
166+
"/boards/esp32-s3-lcd-1.47b-pyble-v0.5.0.jpg",
167+
);
168+
expect(boardPhoto.closest("figure")).toHaveTextContent(
169+
/Actual board.*PyBLE firmware v0\.5\.0/i,
170+
);
171+
152172
// "Before you connect" must not claim Web Serial or desktop Chromium as a
153173
// requirement of the Pico flow.
154174
const beforeConnect = screen
@@ -393,6 +413,14 @@ describe("firmware installer release copy", () => {
393413
.closest("section");
394414
expect(methods).toHaveTextContent(/visibly pending candidate/i);
395415
expect(methods).toHaveTextContent(/hardware qualification.*pending/i);
416+
417+
// The real-hardware photo stays, but the spotlight eyebrow must not
418+
// claim a validated board while qualification is pending.
419+
const spotlight = screen
420+
.getByRole("heading", { name: "Waveshare ESP32-S3-LCD-1.47B" })
421+
.closest("section");
422+
expect(spotlight).toHaveTextContent(/hardware qualification pending/i);
423+
expect(spotlight).not.toHaveTextContent(/Validated display board/i);
396424
});
397425
});
398426

@@ -413,6 +441,13 @@ describe("firmware installer release copy", () => {
413441
.getByRole("heading", { name: /two provisioning methods/i })
414442
.closest("section");
415443
expect(methods).not.toHaveTextContent(/visibly pending candidate/i);
444+
445+
// Once qualified, the spotlight keeps its validated framing.
446+
const spotlight = screen
447+
.getByRole("heading", { name: "Waveshare ESP32-S3-LCD-1.47B" })
448+
.closest("section");
449+
expect(spotlight).toHaveTextContent(/Validated display board/i);
450+
expect(spotlight).not.toHaveTextContent(/qualification pending/i);
416451
});
417452
});
418453

0 commit comments

Comments
 (0)