Conversation
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/64e3478b-91f9-4f13-aec7-9f7ffc6cfdac Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/64e3478b-91f9-4f13-aec7-9f7ffc6cfdac Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/64e3478b-91f9-4f13-aec7-9f7ffc6cfdac Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/64e3478b-91f9-4f13-aec7-9f7ffc6cfdac Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Improves docs accessibility and mobile readability by adding build-time labels for markdown table cells and descriptive metadata for homepage videos, with Playwright coverage.
Changes:
- Added a remark plugin to inject
data-labelattributes into markdown table<td>cells at build time. - Extended the
Videocomponent to support an optionaltitleprop and improvedaria-labelfallback behavior. - Added Playwright tests to validate table
data-labeloutput with JS disabled and to asserttitleattributes on homepage videos.
Show a summary per file
| File | Description |
|---|---|
| docs/tests/mobile-responsive.spec.ts | Adds a JS-disabled Playwright test to assert data-label attributes exist on rendered markdown tables. |
| docs/tests/homepage-links.spec.ts | Adds a Playwright test asserting homepage videos expose descriptive title attributes. |
| docs/src/lib/remark/tableDataLabels.js | New remark plugin that copies header text into per-cell data-label attributes for tables. |
| docs/src/content/docs/index.mdx | Supplies descriptive title props for the two homepage videos. |
| docs/src/components/Video.astro | Adds title prop support and improves accessible labeling fallback for videos. |
| docs/astro.config.mjs | Registers the new remark plugin in Astro markdown config so labels are present at build time. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 6/6 changed files
- Comments generated: 2
| const context = await browser.newContext({ | ||
| javaScriptEnabled: false, | ||
| viewport: { width: 393, height: 852 }, | ||
| }); | ||
| const page = await context.newPage(); | ||
|
|
||
| await page.goto('/gh-aw/reference/engines/'); | ||
| await page.waitForLoadState('domcontentloaded'); |
There was a problem hiding this comment.
browser.newContext() here won't inherit the project baseURL from playwright.config.ts, so page.goto('/gh-aw/reference/engines/') will fail with an invalid/relative URL in this manually-created context. Pass baseURL into newContext() (or navigate using an absolute URL derived from the configured baseURL) so the test can run reliably.
| const page = await context.newPage(); | ||
|
|
||
| await page.goto('/gh-aw/reference/engines/'); | ||
| await page.waitForLoadState('domcontentloaded'); | ||
|
|
||
| const firstTableCell = page.locator('.sl-markdown-content table tbody td').first(); | ||
| await expect(firstTableCell).toBeVisible(); | ||
| await expect(firstTableCell).toHaveAttribute('data-label', 'Engine'); | ||
|
|
||
| await context.close(); |
There was a problem hiding this comment.
If an assertion fails before context.close() is reached, the custom browser context can leak and affect subsequent tests. Wrap the test body in a try/finally (or use Playwright fixtures) to guarantee the context is closed.
| const page = await context.newPage(); | |
| await page.goto('/gh-aw/reference/engines/'); | |
| await page.waitForLoadState('domcontentloaded'); | |
| const firstTableCell = page.locator('.sl-markdown-content table tbody td').first(); | |
| await expect(firstTableCell).toBeVisible(); | |
| await expect(firstTableCell).toHaveAttribute('data-label', 'Engine'); | |
| await context.close(); | |
| try { | |
| const page = await context.newPage(); | |
| await page.goto('/gh-aw/reference/engines/'); | |
| await page.waitForLoadState('domcontentloaded'); | |
| const firstTableCell = page.locator('.sl-markdown-content table tbody td').first(); | |
| await expect(firstTableCell).toBeVisible(); | |
| await expect(firstTableCell).toHaveAttribute('data-label', 'Engine'); | |
| } finally { | |
| await context.close(); | |
| } |
🧪 Test Quality Sentinel ReportTest Quality Score: N/Ai️ Outside scoring scope — all changed test files are TypeScript/Playwright (
Language SupportTests analyzed:
TypeScript/Playwright Tests Detected (Informational)
Both new tests verify observable behavioral contracts (accessibility attributes, server-side rendering) rather than implementation details. The JS-disabled context in the table test is particularly valuable — it catches the exact regression the feature guards against. Test inflation check:
Verdict
📖 Understanding Test ClassificationsDesign Tests (High Value) verify what the system does:
Implementation Tests (Low Value) verify how the system does it:
Goal: Shift toward tests that describe the system's behavioral contract. References: §24520356549
|
The multi-device docs report flagged unlabeled mobile table cards across several pages and missing accessible video metadata on the homepage. This update makes table labels available at build time and adds descriptive metadata for the two homepage videos.
Build-time markdown table labels (mobile card layout)
data-labelon each markdown table<td>from its corresponding header text.Video accessibility metadata on homepage
Videocomponent with an optionaltitleprop.aria-labelnow falls back totitle, thencaption, then a filename-derived label to avoid unlabeled videos.Coverage for the reported regressions
data-labelvalues with JavaScript disabled.titleattributes.Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
accounts.google.com/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=29500 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/playwright_chromiumdev_profile-7yDEr6 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,17360506367016700875,15478804173725202895,262144 --enable-features=CDPScreenshotNewSurface --disable-features=AutoDeElevate,AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,OptimizationHints,PaintHolding,Rend GOMODCACHE go(dns block)/usr/bin/chromium-browser /usr/bin/chromium-browser --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl 64/bin/go GOINSECURE GOMOD GOMODCACHE go(dns block)/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=29669 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/playwright_chromiumdev_profile-cHsCHn --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13644703032059295911,1697239941215651294,262144 --enable-features=CDPScreenshotNewSurface --disable-features=AutoDeElevate,AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,OptimizationHints,PaintHolding,Rend GOMODCACHE go(dns block)clients2.google.com/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=29500 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/playwright_chromiumdev_profile-7yDEr6 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,17360506367016700875,15478804173725202895,262144 --enable-features=CDPScreenshotNewSurface --disable-features=AutoDeElevate,AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,OptimizationHints,PaintHolding,Rend GOMODCACHE go(dns block)/usr/bin/chromium-browser /usr/bin/chromium-browser --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl 64/bin/go GOINSECURE GOMOD GOMODCACHE go(dns block)/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=29669 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/playwright_chromiumdev_profile-cHsCHn --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13644703032059295911,1697239941215651294,262144 --enable-features=CDPScreenshotNewSurface --disable-features=AutoDeElevate,AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,OptimizationHints,PaintHolding,Rend GOMODCACHE go(dns block)telemetry.astro.build/opt/hostedtoolcache/node/24.14.1/x64/bin/node node /home/REDACTED/work/gh-aw/gh-aw/docs/node_modules/.bin/astro dev --host 127.0.0.1 --port 4321 64/bin/go GOINSECURE GOMOD GOMODCACHE go env js/**/*.json' --ignore-path ../../../.prettierignore GO111MODULE in/dist/ripgrep/bin/linux-x64/rg GOINSECURE GOMOD GOMODCACHE in/dist/ripgrep/bin/linux-x64/rg(dns block)/opt/hostedtoolcache/node/24.14.1/x64/bin/node node /home/REDACTED/work/gh-aw/gh-aw/docs/node_modules/.bin/astro dev --host 127.0.0.1 --port 4321 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go(dns block)/opt/hostedtoolcache/node/24.14.1/x64/bin/node node /home/REDACTED/work/gh-aw/gh-aw/docs/node_modules/.bin/astro dev --host 127.0.0.1 --port 4321 64/bin/go GOINSECURE GOMOD GOMODCACHE go env bel GO111MODULE ode_modules/.bin/node GOINSECURE GOMOD GOMODCACHE go(dns block)www.google.com/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=29500 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/playwright_chromiumdev_profile-7yDEr6 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,17360506367016700875,15478804173725202895,262144 --enable-features=CDPScreenshotNewSurface --disable-features=AutoDeElevate,AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,OptimizationHints,PaintHolding,Rend GOMODCACHE go(dns block)/usr/bin/chromium-browser /usr/bin/chromium-browser --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl 64/bin/go GOINSECURE GOMOD GOMODCACHE go(dns block)/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=29669 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/playwright_chromiumdev_profile-cHsCHn --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13644703032059295911,1697239941215651294,262144 --enable-features=CDPScreenshotNewSurface --disable-features=AutoDeElevate,AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,OptimizationHints,PaintHolding,Rend GOMODCACHE go(dns block)If you need me to access, download, or install something from one of these locations, you can either: