Skip to content

Commit 3648979

Browse files
authored
Merge pull request #1631 from w3c/development
Create November 7, 2025 Release Includes the following changes: * #1629 * #1630
2 parents d596819 + 35ad3e2 commit 3648979

File tree

11 files changed

+108
-73
lines changed

11 files changed

+108
-73
lines changed

client/components/Reports/Reports.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ const Reports = () => {
4444
<KeyMetricsBanner />
4545
<section className={clsx(reportsStyles.contentSection)}>
4646
<h1>Assistive Technology Interoperability Reports</h1>
47-
<p>Loading ...</p>
47+
<p className="loading">Loading ...</p>
4848
</section>
4949
</Container>
5050
);

client/components/Reports/SummarizeTestPlanReport.jsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,11 +317,12 @@ const SummarizeTestPlanReport = ({ testPlanVersion, testPlanReports }) => {
317317
{renderUntestableAssertionsSummary()}
318318
{testPlanReport.finalizedTestResults.map((testResult, index) => {
319319
const test = testResult.test;
320+
const testPlanDirectory = testPlanVersion.testPlan.directory;
320321

321322
const reportLink = `https://aria-at.w3.org${location.pathname}#result-${testResult.id}`;
322323
const issueLink = createIssueLink({
323324
testPlanTitle: testPlanVersion.title,
324-
testPlanDirectory: testPlanVersion.testPlan.directory,
325+
testPlanDirectory,
325326
versionString: testPlanVersion.versionString,
326327
testTitle: test.title,
327328
testRowNumber: test.rowNumber,
@@ -335,11 +336,18 @@ const SummarizeTestPlanReport = ({ testPlanVersion, testPlanReports }) => {
335336
reportLink
336337
});
337338

338-
// TODO: fix renderedUrl
339+
// TODO: fix renderedUrl source
339340
let modifiedRenderedUrl = test.renderedUrl.replace(
340341
/.+(?=\/tests)/,
341342
'https://aria-at.netlify.app'
342343
);
344+
if (!modifiedRenderedUrl.includes(testPlanDirectory)) {
345+
const lastDirectorySegment = testPlanDirectory.split('/').pop();
346+
modifiedRenderedUrl = modifiedRenderedUrl.replace(
347+
new RegExp(`/${lastDirectorySegment}/`),
348+
`/${testPlanDirectory}/`
349+
);
350+
}
343351

344352
const assertionsSummary = summarizeAssertions(
345353
getMetrics({

client/components/common/Tabs/Tabs.jsx

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const Tabs = ({ tabs, basePath }) => {
77
const location = useLocation();
88
const navigate = useNavigate();
99
const tabRefs = useRef([]);
10+
const focusRef = useRef(null);
1011

1112
const getTabIndexFromPath = () => {
1213
if (!basePath) return 0;
@@ -26,6 +27,23 @@ const Tabs = ({ tabs, basePath }) => {
2627
tabRefs.current = tabRefs.current.slice(0, tabs.length);
2728
}, [tabs]);
2829

30+
useEffect(() => {
31+
const targetIndex = focusRef.current;
32+
if (
33+
targetIndex !== null &&
34+
targetIndex === selectedTab &&
35+
tabRefs.current[targetIndex]
36+
) {
37+
// setTimeout to ensure focus happens after DOM updates and path changes
38+
setTimeout(() => {
39+
if (tabRefs.current[targetIndex]) {
40+
tabRefs.current[targetIndex].focus();
41+
}
42+
focusRef.current = null;
43+
}, 0);
44+
}
45+
}, [selectedTab, location.pathname]);
46+
2947
useEffect(() => {
3048
if (!basePath) return;
3149

@@ -43,7 +61,9 @@ const Tabs = ({ tabs, basePath }) => {
4361
}
4462

4563
const pathIndex = getTabIndexFromPath();
46-
if (pathIndex !== selectedTab) {
64+
// Don't update selectedTab if we're in the middle of a programmatic nav
65+
// (indicated by focusTargetRef being set)
66+
if (pathIndex !== selectedTab && focusRef.current === null) {
4767
setSelectedTab(pathIndex);
4868
}
4969
}, [location.pathname, tabs, basePath, selectedTab, navigate]);
@@ -87,8 +107,8 @@ const Tabs = ({ tabs, basePath }) => {
87107
}
88108

89109
event.preventDefault();
110+
focusRef.current = newIndex;
90111
updateSelectedTab(newIndex);
91-
tabRefs.current[newIndex]?.focus();
92112
};
93113

94114
return (

client/tests/e2e/TestQueue.e2e.test.js

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ describe('Test Queue admin traits when reports exist', () => {
9090
const modalDialogSectionButtonSelector =
9191
'button#disclosure-btn-apg\\/modal-dialog-0';
9292
const modalDialogTableSelector =
93-
'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]';
93+
'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]';
9494

9595
await page.waitForSelector(modalDialogSectionButtonSelector);
9696

@@ -103,7 +103,7 @@ describe('Test Queue admin traits when reports exist', () => {
103103
modalDialogSectionContainerSelector
104104
);
105105

106-
// Expand Modal Dialog's V25.10.16 section
106+
// Expand Modal Dialog's V25.11.06 section
107107
await page.click(modalDialogSectionButtonSelector);
108108
const postClickModalDialogSectionDisplay = await display(
109109
page,
@@ -169,7 +169,7 @@ describe('Test Queue admin traits when reports exist', () => {
169169
);
170170
});
171171

172-
expect(modalDialogSectionButton.includes('V25.10.16')).toBe(true);
172+
expect(modalDialogSectionButton.includes('V25.11.06')).toBe(true);
173173
expect(preClickModalDialogSectionDisplay).toBe('none');
174174
expect(postClickModalDialogSectionDisplay).toBe('block');
175175
expect(validTable).toBe(true);
@@ -181,19 +181,19 @@ describe('Test Queue admin traits when reports exist', () => {
181181
const modalDialogSectionButtonSelector =
182182
'button#disclosure-btn-apg\\/modal-dialog-0';
183183
const modalDialogTableSelector =
184-
'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]';
184+
'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]';
185185

186186
await page.waitForSelector(modalDialogSectionButtonSelector);
187187

188-
// Expand Modal Dialog's V25.10.16 section
188+
// Expand Modal Dialog's V25.11.06 section
189189
await page.click(modalDialogSectionButtonSelector);
190190

191191
// Wait for the table to render
192192
await page.waitForSelector(modalDialogTableSelector);
193193

194194
const assignTestersDropdownButton = await page.evaluateHandle(() => {
195195
const modalDialogTableSelector =
196-
'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]';
196+
'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]';
197197
const modalDialogTable = document.querySelector(
198198
modalDialogTableSelector
199199
);
@@ -263,11 +263,11 @@ describe('Test Queue admin traits when reports exist', () => {
263263
const modalDialogRequiredReportsButtonSelector =
264264
'div#disclosure-btn-controls-apg\\/modal-dialog-0 div.metadata-container button.test-plan-report-status-dialog-button';
265265
const modalDialogTableSelector =
266-
'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]';
266+
'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]';
267267

268268
await page.waitForSelector(modalDialogSectionButtonSelector);
269269

270-
// Expand Modal Dialog's V25.10.16 section
270+
// Expand Modal Dialog's V25.11.06 section
271271
await page.click(modalDialogSectionButtonSelector);
272272

273273
// Wait for the table to render
@@ -321,11 +321,11 @@ describe('Test Queue admin traits when reports exist', () => {
321321
const modalDialogRequiredReportsButtonSelector =
322322
'div#disclosure-btn-controls-apg\\/modal-dialog-0 div.metadata-container button.test-plan-report-status-dialog-button';
323323
const modalDialogTableSelector =
324-
'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]';
324+
'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]';
325325

326326
await page.waitForSelector(modalDialogSectionButtonSelector);
327327

328-
// Expand Modal Dialog's V25.10.16 section
328+
// Expand Modal Dialog's V25.11.06 section
329329
await page.click(modalDialogSectionButtonSelector);
330330

331331
// Wait for the table to render
@@ -391,7 +391,7 @@ describe('Test Queue admin traits when reports exist', () => {
391391
const sectionButtonSelector =
392392
'button#disclosure-btn-apg\\/modal-dialog-0';
393393
const tableSelector =
394-
'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]';
394+
'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]';
395395

396396
await page.waitForSelector(sectionButtonSelector);
397397
await page.click(sectionButtonSelector);
@@ -520,7 +520,7 @@ describe('Test Queue tester traits when reports exist', () => {
520520
const modalDialogSectionButtonSelector =
521521
'button#disclosure-btn-apg\\/modal-dialog-0';
522522
const modalDialogTableSelector =
523-
'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]';
523+
'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]';
524524

525525
await page.waitForSelector(modalDialogSectionButtonSelector);
526526

@@ -533,7 +533,7 @@ describe('Test Queue tester traits when reports exist', () => {
533533
modalDialogSectionContainerSelector
534534
);
535535

536-
// Expand Modal Dialog's V25.10.16 section
536+
// Expand Modal Dialog's V25.11.06 section
537537
await page.click(modalDialogSectionButtonSelector);
538538
const postClickModalDialogSectionDisplay = await display(
539539
page,
@@ -600,7 +600,7 @@ describe('Test Queue tester traits when reports exist', () => {
600600
);
601601
});
602602

603-
expect(modalDialogSectionButton.includes('V25.10.16')).toBe(true);
603+
expect(modalDialogSectionButton.includes('V25.11.06')).toBe(true);
604604
expect(preClickModalDialogSectionDisplay).toBe('none');
605605
expect(postClickModalDialogSectionDisplay).toBe('block');
606606
expect(validTable).toBe(true);
@@ -612,11 +612,11 @@ describe('Test Queue tester traits when reports exist', () => {
612612
const modalDialogSectionButtonSelector =
613613
'button#disclosure-btn-apg\\/modal-dialog-0';
614614
const modalDialogTableSelector =
615-
'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]';
615+
'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]';
616616

617617
await page.waitForSelector(modalDialogSectionButtonSelector);
618618

619-
// Expand Modal Dialog's V25.10.16 section
619+
// Expand Modal Dialog's V25.11.06 section
620620
await page.click(modalDialogSectionButtonSelector);
621621

622622
// Wait for the table to render
@@ -655,7 +655,7 @@ describe('Test Queue tester traits when reports exist', () => {
655655

656656
const assignYourselfButton = await page.evaluateHandle(() => {
657657
const modalDialogTableSelector =
658-
'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]';
658+
'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]';
659659
const modalDialogTable = document.querySelector(
660660
modalDialogTableSelector
661661
);
@@ -719,7 +719,7 @@ describe('Test Queue tester traits when reports exist', () => {
719719
const modalDialogSectionButtonSelector =
720720
'button#disclosure-btn-apg\\/modal-dialog-0';
721721
const modalDialogTableSelector =
722-
'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]';
722+
'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]';
723723

724724
await page.waitForSelector(modalDialogSectionButtonSelector);
725725
await page.click(modalDialogSectionButtonSelector);

client/tests/e2e/TestRun.e2e.test.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,10 @@ describe('Test Run when signed in as admin', () => {
114114
page,
115115
{
116116
testPlanSectionButtonSelector = 'button#disclosure-btn-apg\\/modal-dialog-0',
117-
testPlanTableSelector = 'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]'
117+
testPlanTableSelector = 'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]'
118118
} = {}
119119
) => {
120-
// Expand Modal Dialog's V25.10.16 section
120+
// Expand Modal Dialog's V25.11.06 section
121121
await page.waitForSelector(testPlanSectionButtonSelector);
122122
await page.click(testPlanSectionButtonSelector);
123123

@@ -127,7 +127,7 @@ describe('Test Run when signed in as admin', () => {
127127
// Find the 'Open run as...' dropdown button from the Actions Column
128128
await page.evaluate(() => {
129129
const modalDialogTableSelector =
130-
'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]';
130+
'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]';
131131
const modalDialogTable = document.querySelector(modalDialogTableSelector);
132132

133133
// Find the 'Open run as...' button from the Actions Column
@@ -281,13 +281,13 @@ describe('Test Run when signed in as tester', () => {
281281
page,
282282
{
283283
testPlanSectionButtonSelector = 'button#disclosure-btn-apg\\/modal-dialog-0',
284-
testPlanTableSelector = 'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]'
284+
testPlanTableSelector = 'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]'
285285
} = {}
286286
) => {
287287
const startTestingButtonSelector =
288288
'a[role="button"] ::-p-text(Start Testing)';
289289

290-
// Expand Modal Dialog's V25.10.16 section
290+
// Expand Modal Dialog's V25.11.06 section
291291
await page.waitForSelector(testPlanSectionButtonSelector);
292292
await page.click(testPlanSectionButtonSelector);
293293

@@ -340,10 +340,10 @@ describe('Test Run when signed in as tester', () => {
340340
page,
341341
{
342342
testPlanSectionButtonSelector = 'button#disclosure-btn-apg\\/modal-dialog-0',
343-
testPlanTableSelector = 'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]'
343+
testPlanTableSelector = 'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]'
344344
} = {}
345345
) => {
346-
// Expand Modal Dialog's V25.10.16 section
346+
// Expand Modal Dialog's V25.11.06 section
347347
await page.waitForSelector(testPlanSectionButtonSelector);
348348
await page.click(testPlanSectionButtonSelector);
349349

@@ -353,7 +353,7 @@ describe('Test Run when signed in as tester', () => {
353353
// Find the 'View Results for...' dropdown button from the Actions Column
354354
await page.evaluate(() => {
355355
const modalDialogTableSelector =
356-
'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]';
356+
'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]';
357357
const modalDialogTable = document.querySelector(modalDialogTableSelector);
358358

359359
// Find the 'View Results for...' button from the Actions Column
@@ -799,7 +799,7 @@ describe('Test Run when signed in as tester', () => {
799799
testPlanSectionButtonSelector:
800800
'button#disclosure-btn-apg\\/horizontal-slider-0',
801801
testPlanTableSelector:
802-
'table[aria-label="Reports for Color Viewer Slider V25.10.16 in draft phase"]'
802+
'table[aria-label="Reports for Color Viewer Slider V25.11.06 in draft phase"]'
803803
});
804804
await handlePageSubmit(page, { expectConflicts: false });
805805
}
@@ -831,7 +831,7 @@ describe('Test Run when signed in as tester', () => {
831831
const sectionButtonSelector =
832832
'button#disclosure-btn-apg\\/modal-dialog-0';
833833
const tableSelector =
834-
'table[aria-label="Reports for Modal Dialog Example V25.10.16 in draft phase"]';
834+
'table[aria-label="Reports for Modal Dialog Example V25.11.06 in draft phase"]';
835835

836836
await page.waitForSelector(sectionButtonSelector);
837837
await page.click(sectionButtonSelector);

client/tests/e2e/snapshots/saved/_candidate-test-plan_24_1.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -836,7 +836,7 @@ <h2 id="test-options-heading">Test Review Options</h2>
836836
<a
837837
role="button"
838838
tabindex="0"
839-
href="https://github.com/bocoup/aria-at/issues/new?title=JAWS%20Changes%20Requested:%20%22Open%20a%20Modal%20Dialog%20in%20reading%20mode%22%20(Modal%20Dialog%20Example,%20Test%201,%20V22.05.26)%20for%20Candidate%20Report&amp;labels=candidate-review,jaws,changes-requested&amp;body=%23%23%20Description%20of%20Behavior%0A%0A%3C!--%20Write%20your%20description%20here%20--%3E%0A%0A%23%23%20Test%20Setup%0A%0A-%20Test%20File%3A%20%5Btest-01-open-a-modal-dialog-reading-jaws.collected.html%5D(https%3A%2F%2Faria-at.netlify.app%2Ftests%2Fmodal-dialog%2Ftest-01-open-a-modal-dialog-reading-jaws.collected.html)%0A-%20AT%3A%20JAWS%0A%0A%3C!--%20The%20following%20data%20allows%20the%20issue%20to%20be%20imported%20into%20the%20ARIA%20AT%20App%20--%3E%0A%3C!--%20ARIA_AT_APP_ISSUE_DATA%20%3D%20%7B%22testPlanDirectory%22%3A%22apg%2Fmodal-dialog%22%2C%22versionString%22%3A%22V22.05.26%22%2C%22atName%22%3A%22JAWS%22%2C%22browserName%22%3Anull%2C%22testRowNumber%22%3A1%2C%22testSequenceNumber%22%3A1%2C%22isCandidateReview%22%3Atrue%2C%22isCandidateReviewChangesRequested%22%3Atrue%7D%20--%3E"
839+
href="https://github.com/bocoup/aria-at/issues/new?title=JAWS%20Changes%20Requested:%20%22Open%20a%20Modal%20Dialog%20in%20reading%20mode%22%20(Modal%20Dialog%20Example,%20Test%201,%20V22.05.26)%20for%20Candidate%20Report&amp;labels=candidate-review,jaws,changes-requested&amp;body=%23%23%20Description%20of%20Behavior%0A%0A%3C!--%20Write%20your%20description%20here%20--%3E%0A%0A%23%23%20Test%20Setup%0A%0A-%20Test%20File%3A%20%5Btest-01-open-a-modal-dialog-reading-jaws.collected.html%5D(https%3A%2F%2Faria-at.netlify.app%2Ftests%2Fapg%2Fmodal-dialog%2Ftest-01-open-a-modal-dialog-reading-jaws.collected.html)%0A-%20AT%3A%20JAWS%0A%0A%3C!--%20The%20following%20data%20allows%20the%20issue%20to%20be%20imported%20into%20the%20ARIA%20AT%20App%20--%3E%0A%3C!--%20ARIA_AT_APP_ISSUE_DATA%20%3D%20%7B%22testPlanDirectory%22%3A%22apg%2Fmodal-dialog%22%2C%22versionString%22%3A%22V22.05.26%22%2C%22atName%22%3A%22JAWS%22%2C%22browserName%22%3Anull%2C%22testRowNumber%22%3A1%2C%22testSequenceNumber%22%3A1%2C%22isCandidateReview%22%3Atrue%2C%22isCandidateReviewChangesRequested%22%3Atrue%7D%20--%3E"
840840
target="_blank"
841841
aria-disabled="false"
842842
class="option-btn btn btn-secondary"
@@ -847,7 +847,7 @@ <h2 id="test-options-heading">Test Review Options</h2>
847847
<a
848848
role="button"
849849
tabindex="0"
850-
href="https://github.com/bocoup/aria-at/issues/new?title=JAWS%20Feedback:%20%22Open%20a%20Modal%20Dialog%20in%20reading%20mode%22%20(Modal%20Dialog%20Example,%20Test%201,%20V22.05.26)%20for%20Candidate%20Report&amp;labels=candidate-review,jaws,feedback&amp;body=%23%23%20Description%20of%20Behavior%0A%0A%3C!--%20Write%20your%20description%20here%20--%3E%0A%0A%23%23%20Test%20Setup%0A%0A-%20Test%20File%3A%20%5Btest-01-open-a-modal-dialog-reading-jaws.collected.html%5D(https%3A%2F%2Faria-at.netlify.app%2Ftests%2Fmodal-dialog%2Ftest-01-open-a-modal-dialog-reading-jaws.collected.html)%0A-%20AT%3A%20JAWS%0A%0A%3C!--%20The%20following%20data%20allows%20the%20issue%20to%20be%20imported%20into%20the%20ARIA%20AT%20App%20--%3E%0A%3C!--%20ARIA_AT_APP_ISSUE_DATA%20%3D%20%7B%22testPlanDirectory%22%3A%22apg%2Fmodal-dialog%22%2C%22versionString%22%3A%22V22.05.26%22%2C%22atName%22%3A%22JAWS%22%2C%22browserName%22%3Anull%2C%22testRowNumber%22%3A1%2C%22testSequenceNumber%22%3A1%2C%22isCandidateReview%22%3Atrue%2C%22isCandidateReviewChangesRequested%22%3Afalse%7D%20--%3E"
850+
href="https://github.com/bocoup/aria-at/issues/new?title=JAWS%20Feedback:%20%22Open%20a%20Modal%20Dialog%20in%20reading%20mode%22%20(Modal%20Dialog%20Example,%20Test%201,%20V22.05.26)%20for%20Candidate%20Report&amp;labels=candidate-review,jaws,feedback&amp;body=%23%23%20Description%20of%20Behavior%0A%0A%3C!--%20Write%20your%20description%20here%20--%3E%0A%0A%23%23%20Test%20Setup%0A%0A-%20Test%20File%3A%20%5Btest-01-open-a-modal-dialog-reading-jaws.collected.html%5D(https%3A%2F%2Faria-at.netlify.app%2Ftests%2Fapg%2Fmodal-dialog%2Ftest-01-open-a-modal-dialog-reading-jaws.collected.html)%0A-%20AT%3A%20JAWS%0A%0A%3C!--%20The%20following%20data%20allows%20the%20issue%20to%20be%20imported%20into%20the%20ARIA%20AT%20App%20--%3E%0A%3C!--%20ARIA_AT_APP_ISSUE_DATA%20%3D%20%7B%22testPlanDirectory%22%3A%22apg%2Fmodal-dialog%22%2C%22versionString%22%3A%22V22.05.26%22%2C%22atName%22%3A%22JAWS%22%2C%22browserName%22%3Anull%2C%22testRowNumber%22%3A1%2C%22testSequenceNumber%22%3A1%2C%22isCandidateReview%22%3Atrue%2C%22isCandidateReviewChangesRequested%22%3Afalse%7D%20--%3E"
851851
target="_blank"
852852
aria-disabled="false"
853853
class="option-btn btn btn-secondary"

0 commit comments

Comments
 (0)