{isRequired ? 'Yes' : 'No'} |
- {at.name} |
+
+
+ {at.name}
+ {atVersionFormatted}
+
+ |
{browser.name} |
- {renderReportStatus({ report, at, browser })} |
+
+ {renderReportStatus({
+ testPlanReport,
+ at,
+ browser,
+ minimumAtVersion,
+ exactAtVersion
+ })}
+ |
);
});
@@ -237,12 +253,8 @@ TestPlanReportStatusDialog.propTypes = {
id: PropTypes.string.isRequired,
title: PropTypes.string.isRequired,
phase: PropTypes.string.isRequired,
- testPlanReports: PropTypes.arrayOf(
+ testPlanReportStatuses: PropTypes.arrayOf(
PropTypes.shape({
- id: PropTypes.string.isRequired,
- status: PropTypes.string,
- runnableTests: PropTypes.arrayOf(PropTypes.object),
- finalizedTestResults: PropTypes.arrayOf(PropTypes.object),
at: PropTypes.shape({
id: PropTypes.string.isRequired,
name: PropTypes.string.isRequired
@@ -250,32 +262,27 @@ TestPlanReportStatusDialog.propTypes = {
browser: PropTypes.shape({
id: PropTypes.string.isRequired,
name: PropTypes.string.isRequired
- }).isRequired
+ }).isRequired,
+ minimumAtVersion: PropTypes.shape({
+ id: PropTypes.string.isRequired,
+ name: PropTypes.string.isRequired
+ }),
+ exactAtVersion: PropTypes.shape({
+ id: PropTypes.string.isRequired,
+ name: PropTypes.string.isRequired
+ }),
+ testPlanReport: PropTypes.shape({
+ id: PropTypes.string.isRequired,
+ status: PropTypes.string,
+ runnableTests: PropTypes.arrayOf(PropTypes.object),
+ finalizedTestResults: PropTypes.arrayOf(PropTypes.object)
+ })
}).isRequired
).isRequired
}).isRequired,
handleHide: PropTypes.func.isRequired,
triggerUpdate: PropTypes.func,
- show: PropTypes.bool.isRequired,
- ats: PropTypes.arrayOf(
- PropTypes.shape({
- id: PropTypes.string.isRequired,
- name: PropTypes.string.isRequired,
- browsers: PropTypes.arrayOf(
- PropTypes.shape({ id: PropTypes.string.isRequired }).isRequired
- ).isRequired,
- candidateBrowsers: PropTypes.arrayOf(
- PropTypes.shape({
- id: PropTypes.string.isRequired
- }).isRequired
- ).isRequired,
- recommendedBrowsers: PropTypes.arrayOf(
- PropTypes.shape({
- id: PropTypes.string.isRequired
- }).isRequired
- ).isRequired
- }).isRequired
- ).isRequired
+ show: PropTypes.bool.isRequired
};
export default TestPlanReportStatusDialog;
diff --git a/client/components/TestPlanReportStatusDialog/isRequired.js b/client/components/TestPlanReportStatusDialog/isRequired.js
deleted file mode 100644
index bf2281e46..000000000
--- a/client/components/TestPlanReportStatusDialog/isRequired.js
+++ /dev/null
@@ -1,60 +0,0 @@
-const requiredReports = {
- DRAFT: [
- {
- browser: { name: 'Chrome', id: '2' },
- at: { name: 'JAWS', id: '1' }
- },
- {
- browser: { name: 'Chrome', id: '2' },
- at: { name: 'NVDA', id: '2' }
- },
- {
- browser: { name: 'Safari', id: '3' },
- at: { name: 'VoiceOver for macOS', id: '3' }
- }
- ],
- CANDIDATE: [
- {
- browser: { name: 'Chrome', id: '2' },
- at: { name: 'JAWS', id: '1' }
- },
- {
- browser: { name: 'Chrome', id: '2' },
- at: { name: 'NVDA', id: '2' }
- },
- {
- browser: { name: 'Safari', id: '3' },
- at: { name: 'VoiceOver for macOS', id: '3' }
- }
- ],
- RECOMMENDED: [
- {
- browser: { name: 'Chrome', id: '2' },
- at: { name: 'JAWS', id: '1' }
- },
- {
- browser: { name: 'Chrome', id: '2' },
- at: { name: 'NVDA', id: '2' }
- },
- {
- browser: { name: 'Safari', id: '3' },
- at: { name: 'VoiceOver for macOS', id: '3' }
- },
- {
- browser: { name: 'Firefox', id: '1' },
- at: { name: 'NVDA', id: '2' }
- },
- {
- browser: { name: 'Firefox', id: '1' },
- at: { name: 'JAWS', id: '1' }
- },
- {
- browser: { name: 'Chrome', id: '2' },
- at: { name: 'VoiceOver for macOS', id: '3' }
- }
- ]
-};
-
-export const getRequiredReports = testPlanPhase => {
- return requiredReports[testPlanPhase] ?? [];
-};
diff --git a/client/components/TestPlanReportStatusDialog/queries.js b/client/components/TestPlanReportStatusDialog/queries.js
index 4a7b4e044..d2ff383fc 100644
--- a/client/components/TestPlanReportStatusDialog/queries.js
+++ b/client/components/TestPlanReportStatusDialog/queries.js
@@ -16,11 +16,8 @@ export const TEST_PLAN_REPORT_STATUS_DIALOG_QUERY = gql`
testPlan {
directory
}
- testPlanReports {
- id
- metrics
- isFinal
- markedFinalAt
+ testPlanReportStatuses {
+ isRequired
at {
id
name
@@ -29,31 +26,45 @@ export const TEST_PLAN_REPORT_STATUS_DIALOG_QUERY = gql`
id
name
}
- issues {
- link
- isOpen
- feedbackType
+ minimumAtVersion {
+ id
+ name
}
- draftTestPlanRuns {
- tester {
- username
- }
- testPlanReport {
- id
+ exactAtVersion {
+ id
+ name
+ }
+ testPlanReport {
+ id
+ metrics
+ isFinal
+ markedFinalAt
+ issues {
+ link
+ isOpen
+ feedbackType
}
- testResults {
- test {
- id
+ draftTestPlanRuns {
+ tester {
+ username
}
- atVersion {
+ testPlanReport {
id
- name
}
- browserVersion {
- id
- name
+ testResults {
+ test {
+ id
+ }
+ atVersion {
+ id
+ name
+ }
+ browserVersion {
+ id
+ name
+ }
+ completedAt
}
- completedAt
}
}
}
diff --git a/client/tests/__mocks__/GraphQLMocks/DataManagementPagePopulatedMock.js b/client/tests/__mocks__/GraphQLMocks/DataManagementPagePopulatedMock.js
index 34f34a85c..b743fc11f 100644
--- a/client/tests/__mocks__/GraphQLMocks/DataManagementPagePopulatedMock.js
+++ b/client/tests/__mocks__/GraphQLMocks/DataManagementPagePopulatedMock.js
@@ -2505,11 +2505,10 @@ export default (
id: '1',
title: 'Alert Example',
phase: 'DRAFT',
- gitSha: '0928bcf530efcf4faa677285439701537674e014',
+ gitSha: 'c665367f3742c2b607f7b3c2655782188b93f302',
gitMessage:
- 'Alert and Radiogroup/activedescendent updates (#865)',
- updatedAt: '2022-12-08T21:47:42.000Z',
- versionString: 'V22.12.08',
+ 'Create updated tests for APG design pattern example: Alert (#685)',
+ updatedAt: '2022-04-14T17:59:42.000Z',
draftPhaseReachedAt: '2022-07-06T00:00:00.000Z',
candidatePhaseReachedAt: null,
recommendedPhaseTargetDate: null,
@@ -2517,686 +2516,141 @@ export default (
testPlan: {
directory: 'alert'
},
- testPlanReports: [
+ testPlanReportStatuses: [
{
- id: '7',
- metrics: {},
- markedFinalAt: null,
- isFinal: false,
+ isRequired: true,
at: {
- id: '3',
- name: 'VoiceOver for macOS'
+ id: '1',
+ name: 'JAWS'
},
browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
id: '1',
- name: 'Firefox'
+ name: '2021.2111.13'
},
- issues: [],
- draftTestPlanRuns: []
- }
- ],
- metadata: {}
- }
- }
- }
- },
- {
- request: {
- query: testPlanReportStatusDialogQuery,
- variables: { testPlanVersionId: '5' }
- },
- result: {
- data: {
- testPlanVersion: {
- id: '5',
- title: 'Checkbox Example (Mixed-State)',
- phase: 'RECOMMENDED',
- gitSha: '836fb2a997f5b2844035b8c934f8fda9833cd5b2',
- gitMessage: 'Validation for test csv formats (#980)',
- updatedAt: '2023-08-23T20:30:34.000Z',
- draftPhaseReachedAt: null,
- candidatePhaseReachedAt: '2022-07-06T00:00:00.000Z',
- recommendedPhaseTargetDate: '2023-01-02T00:00:00.000Z',
- recommendedPhaseReachedAt: '2023-01-03T00:00:00.000Z',
- testPlan: {
- directory: 'checkbox-tri-state'
- },
- testPlanReports: [
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '101',
+ metrics: {},
+ isFinal: false,
+ markedFinalAt: null,
+ issues: [],
+ draftTestPlanRuns: []
+ }
+ },
{
- id: '6',
- metrics: {
- testsCount: 7,
- supportLevel: 'FAILING',
- conflictsCount: 0,
- supportPercent: 96,
- testsFailedCount: 3,
- testsPassedCount: 4,
- shouldFormatted: '4 of 4 passed',
- mustFormatted: '44 of 46 passed',
- shouldAssertionsCount: 4,
- mustAssertionsCount: 46,
- unexpectedBehaviorCount: 0,
- unexpectedBehaviorsFormatted: false,
- shouldAssertionsFailedCount: 0,
- shouldAssertionsPassedCount: 4,
- mustAssertionsFailedCount: 2,
- mustAssertionsPassedCount: 44
- },
- markedFinalAt: '2022-07-06T00:00:00.000Z',
- isFinal: true,
+ isRequired: false,
at: {
- id: '3',
- name: 'VoiceOver for macOS'
+ id: '1',
+ name: 'JAWS'
},
browser: {
- id: '3',
- name: 'Safari'
+ id: '1',
+ name: 'Firefox'
},
- issues: [],
- draftTestPlanRuns: [
- {
- tester: {
- username: 'tom-proudfeet'
- },
- testPlanReport: {
- id: '6'
- },
- testResults: [
- {
- test: {
- id: 'YTE3NeyIyIjoiNSJ9WJlMj'
- },
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
- },
- browserVersion: {
- id: '3',
- name: '14.1.2'
- },
- completedAt:
- '2023-08-30T13:23:57.070Z'
- },
- {
- test: {
- id: 'YWJiOeyIyIjoiNSJ9GQ5Zm'
- },
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
- },
- browserVersion: {
- id: '3',
- name: '14.1.2'
- },
- completedAt:
- '2023-08-30T13:23:57.142Z'
- },
- {
- test: {
- id: 'ZGFlYeyIyIjoiNSJ9TJlMW'
- },
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
- },
- browserVersion: {
- id: '3',
- name: '14.1.2'
- },
- completedAt:
- '2023-08-30T13:23:57.204Z'
- },
- {
- test: {
- id: 'YjI2MeyIyIjoiNSJ9WE1OT'
- },
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
- },
- browserVersion: {
- id: '3',
- name: '14.1.2'
- },
- completedAt:
- '2023-08-30T13:23:57.275Z'
- },
- {
- test: {
- id: 'ZjAwZeyIyIjoiNSJ9TZmZj'
- },
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
- },
- browserVersion: {
- id: '3',
- name: '14.1.2'
- },
- completedAt:
- '2023-08-30T13:23:57.330Z'
- },
- {
- test: {
- id: 'MGRjZeyIyIjoiNSJ9WNiZD'
- },
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
- },
- browserVersion: {
- id: '3',
- name: '14.1.2'
- },
- completedAt:
- '2023-08-30T13:23:57.382Z'
- },
- {
- test: {
- id: 'OTZmYeyIyIjoiNSJ9TU5Ym'
- },
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
- },
- browserVersion: {
- id: '3',
- name: '14.1.2'
- },
- completedAt:
- '2023-08-30T13:23:57.439Z'
- }
- ]
- }
- ]
+ minimumAtVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
},
{
- id: '12',
- metrics: {
- testsCount: 14,
- supportLevel: 'FULL',
- conflictsCount: 0,
- supportPercent: 100,
- testsFailedCount: 12,
- testsPassedCount: 2,
- shouldFormatted: false,
- mustFormatted: '25 of 25 passed',
- shouldAssertionsCount: 0,
- mustAssertionsCount: 25,
- unexpectedBehaviorCount: 0,
- unexpectedBehaviorsFormatted: false,
- shouldAssertionsFailedCount: 0,
- shouldAssertionsPassedCount: 0,
- mustAssertionsFailedCount: 0,
- mustAssertionsPassedCount: 25
- },
- markedFinalAt: '2022-07-06T00:00:00.000Z',
- isFinal: true,
+ isRequired: true,
at: {
- id: '1',
- name: 'JAWS'
+ id: '2',
+ name: 'NVDA'
},
browser: {
id: '2',
name: 'Chrome'
},
- issues: [],
- draftTestPlanRuns: [
- {
- tester: {
- username: 'esmeralda-baggins'
- },
- testPlanReport: {
- id: '12'
- },
- testResults: [
- {
- test: {
- id: 'MTVlZeyIyIjoiNSJ9DUzMz'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-30T13:23:58.343Z'
- },
- {
- test: {
- id: 'OThhMeyIyIjoiNSJ9WMxM2'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-30T13:23:58.404Z'
- },
- {
- test: {
- id: 'YWNhNeyIyIjoiNSJ9TliN2'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-30T13:23:58.472Z'
- }
- ]
- }
- ]
+ minimumAtVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
},
{
- id: '13',
- metrics: {
- testsCount: 14,
- supportLevel: 'FULL',
- conflictsCount: 0,
- supportPercent: 100,
- testsFailedCount: 12,
- testsPassedCount: 2,
- shouldFormatted: false,
- mustFormatted: '25 of 25 passed',
- shouldAssertionsCount: 0,
- mustAssertionsCount: 25,
- unexpectedBehaviorCount: 0,
- unexpectedBehaviorsFormatted: false,
- shouldAssertionsFailedCount: 0,
- shouldAssertionsPassedCount: 0,
- mustAssertionsFailedCount: 0,
- mustAssertionsPassedCount: 25
- },
- markedFinalAt: '2022-07-07T00:00:00.000Z',
- isFinal: true,
+ isRequired: false,
at: {
id: '2',
name: 'NVDA'
},
browser: {
+ id: '1',
+ name: 'Firefox'
+ },
+ minimumAtVersion: {
id: '2',
- name: 'Chrome'
+ name: '2020.4'
},
- issues: [],
- draftTestPlanRuns: [
- {
- tester: {
- username: 'esmeralda-baggins'
- },
- testPlanReport: {
- id: '13'
- },
- testResults: [
- {
- test: {
- id: 'MTVlZeyIyIjoiNSJ9DUzMz'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-30T13:23:58.531Z'
- },
- {
- test: {
- id: 'OThhMeyIyIjoiNSJ9WMxM2'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-30T13:23:58.593Z'
- },
- {
- test: {
- id: 'YWNhNeyIyIjoiNSJ9TliN2'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-30T13:23:58.655Z'
- }
- ]
- }
- ]
- }
- ],
- metadata: {}
- }
- }
- }
- },
- {
- request: {
- query: testPlanReportStatusDialogQuery,
- variables: { testPlanVersionId: '7' }
- },
- result: {
- data: {
- testPlanVersion: {
- id: '7',
- title: 'Select Only Combobox Example',
- phase: 'DRAFT',
- gitSha: '7c4b5dce23c74fcf280ed164bdb903e02e0e7726',
- gitMessage:
- 'Generate html source script to support aria-at-app (#646)',
- updatedAt: '2022-03-17T18:34:51.000Z',
- draftPhaseReachedAt: '2022-07-06T00:00:00.000Z',
- candidatePhaseReachedAt: null,
- recommendedPhaseTargetDate: null,
- recommendedPhaseReachedAt: null,
- testPlan: {
- directory: 'combobox-select-only'
- },
- testPlanReports: [
+ exactAtVersion: null,
+ testPlanReport: null
+ },
{
- id: '2',
- metrics: {
- testsCount: 21,
- supportLevel: 'FAILING',
- conflictsCount: 5,
- supportPercent: 96,
- testsFailedCount: 16,
- testsPassedCount: 5,
- shouldFormatted: '3 of 3 passed',
- mustFormatted: '48 of 50 passed',
- shouldAssertionsCount: 3,
- mustAssertionsCount: 50,
- unexpectedBehaviorCount: 3,
- unexpectedBehaviorsFormatted: '3 found',
- shouldAssertionsFailedCount: 0,
- shouldAssertionsPassedCount: 3,
- mustAssertionsFailedCount: 2,
- mustAssertionsPassedCount: 48
+ isRequired: true,
+ at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
+ },
+ browser: {
+ id: '3',
+ name: 'Safari'
},
- markedFinalAt: null,
- isFinal: false,
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: false,
at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
+ },
+ browser: {
id: '2',
- name: 'NVDA'
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
},
browser: {
id: '1',
name: 'Firefox'
},
- issues: [],
- draftTestPlanRuns: [
- {
- tester: {
- username: 'tom-proudfeet'
- },
- testPlanReport: {
- id: '2'
- },
- testResults: [
- {
- test: {
- id: 'Nzg5NeyIyIjoiNyJ9zNjZj'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:08.240Z'
- },
- {
- test: {
- id: 'MmY0YeyIyIjoiNyJ9jRkZD'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:08.332Z'
- },
- {
- test: {
- id: 'ZjUwNeyIyIjoiNyJ9mE2ZT'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:08.412Z'
- },
- {
- test: {
- id: 'MDNiMeyIyIjoiNyJ9Dk1MT'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:08.501Z'
- },
- {
- test: {
- id: 'MjRmNeyIyIjoiNyJ92MyMT'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:08.593Z'
- },
- {
- test: {
- id: 'ZmVlMeyIyIjoiNyJ9mUyYj'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt: null
- },
- {
- test: {
- id: 'YWFiNeyIyIjoiNyJ9zE2Zj'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:08.811Z'
- },
- {
- test: {
- id: 'YjZkYeyIyIjoiNyJ9WIxZm'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:08.902Z'
- },
- {
- test: {
- id: 'ZmIzMeyIyIjoiNyJ9TQ1NW'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:08.996Z'
- }
- ]
- },
- {
- tester: {
- username: 'esmeralda-baggins'
- },
- testPlanReport: {
- id: '2'
- },
- testResults: [
- {
- test: {
- id: 'Nzg5NeyIyIjoiNyJ9zNjZj'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:07.718Z'
- },
- {
- test: {
- id: 'MmY0YeyIyIjoiNyJ9jRkZD'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:07.813Z'
- },
- {
- test: {
- id: 'ZjUwNeyIyIjoiNyJ9mE2ZT'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:07.914Z'
- },
- {
- test: {
- id: 'MDNiMeyIyIjoiNyJ9Dk1MT'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:07.988Z'
- },
- {
- test: {
- id: 'MjRmNeyIyIjoiNyJ92MyMT'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:08.074Z'
- },
- {
- test: {
- id: 'ZmVlMeyIyIjoiNyJ9mUyYj'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt: null
- }
- ]
- }
- ]
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '7',
+ metrics: {},
+ isFinal: false,
+ markedFinalAt: null,
+ issues: [],
+ draftTestPlanRuns: []
+ }
}
- ],
- metadata: {}
+ ]
}
}
}
@@ -3204,583 +2658,4303 @@ export default (
{
request: {
query: testPlanReportStatusDialogQuery,
- variables: { testPlanVersionId: '26' }
+ variables: { testPlanVersionId: '5' }
},
result: {
data: {
testPlanVersion: {
- id: '26',
- title: 'Modal Dialog Example',
- phase: 'CANDIDATE',
- gitSha: 'd0e16b42179de6f6c070da2310e99de837c71215',
- gitMessage:
- 'Delete down arrow command for navigating to the beginning of a dialog with JAWS and add the ESC command to exit forms or focus mode (#759)',
- updatedAt: '2022-06-22T17:56:16.000Z',
- draftPhaseReachedAt: '2022-07-06T00:00:00.000Z',
+ id: '69',
+ title: 'Checkbox Example (Mixed-State)',
+ phase: 'RECOMMENDED',
+ gitSha: '836fb2a997f5b2844035b8c934f8fda9833cd5b2',
+ gitMessage: 'Validation for test csv formats (#980)',
+ updatedAt: '2023-08-23T20:30:34.000Z',
+ draftPhaseReachedAt: null,
candidatePhaseReachedAt: '2022-07-06T00:00:00.000Z',
recommendedPhaseTargetDate: '2023-01-02T00:00:00.000Z',
- recommendedPhaseReachedAt: null,
+ recommendedPhaseReachedAt: '2023-01-03T00:00:00.000Z',
testPlan: {
- directory: 'modal-dialog'
+ directory: 'checkbox-tri-state'
},
- testPlanReports: [
+ testPlanReportStatuses: [
{
- id: '10',
- metrics: {
- testsCount: 11,
- supportLevel: 'FULL',
- conflictsCount: 0,
- supportPercent: 100,
- testsFailedCount: 9,
- testsPassedCount: 2,
- shouldFormatted: false,
- mustFormatted: '14 of 14 passed',
- shouldAssertionsCount: 0,
- mustAssertionsCount: 14,
- unexpectedBehaviorCount: 0,
- unexpectedBehaviorsFormatted: false,
- shouldAssertionsFailedCount: 0,
- shouldAssertionsPassedCount: 0,
- mustAssertionsFailedCount: 0,
- mustAssertionsPassedCount: 14
- },
- markedFinalAt: null,
- isFinal: false,
+ isRequired: true,
at: {
- id: '3',
- name: 'VoiceOver for macOS'
+ id: '1',
+ name: 'JAWS'
},
browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
id: '1',
- name: 'Firefox'
+ name: '2021.2111.13'
},
- issues: [],
- draftTestPlanRuns: [
- {
- tester: {
- username: 'esmeralda-baggins'
- },
- testPlanReport: {
- id: '10'
- },
- testResults: [
- {
- test: {
- id: 'MzlmYeyIyIjoiMjYifQzIxY2'
- },
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '12',
+ metrics: {
+ testsCount: 14,
+ mayFormatted: false,
+ supportLevel: 'FULL',
+ commandsCount: 26,
+ mustFormatted: '116 of 116 passed',
+ conflictsCount: 0,
+ supportPercent: 100,
+ shouldFormatted: '34 of 34 passed',
+ testsFailedCount: 0,
+ testsPassedCount: 14,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 116,
+ assertionsFailedCount: 0,
+ assertionsPassedCount: 150,
+ shouldAssertionsCount: 34,
+ unexpectedBehaviorCount: 0,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 0,
+ mustAssertionsPassedCount: 116,
+ shouldAssertionsFailedCount: 0,
+ shouldAssertionsPassedCount: 34,
+ unexpectedBehaviorsFormatted: false,
+ severeImpactFailedAssertionCount: 0,
+ severeImpactPassedAssertionCount: 26,
+ moderateImpactFailedAssertionCount: 0,
+ moderateImpactPassedAssertionCount: 26
+ },
+ isFinal: true,
+ markedFinalAt: '2022-07-06T00:00:00.000Z',
+ issues: [],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'esmeralda-baggins'
+ },
+ testPlanReport: {
+ id: '12'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'YWYzOeyIyIjoiNjkifQTQ0MT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:52.053Z'
},
- browserVersion: {
- id: '1',
- name: '99.0.1'
+ {
+ test: {
+ id: 'OGZjNeyIyIjoiNjkifQjQxZW'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:52.149Z'
},
- completedAt:
- '2023-08-18T03:17:11.295Z'
- },
- {
- test: {
- id: 'N2FkZeyIyIjoiMjYifQDQ5NT'
+ {
+ test: {
+ id: 'NjM3ZeyIyIjoiNjkifQmUxYz'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:52.242Z'
+ },
+ {
+ test: {
+ id: 'ZWQ0MeyIyIjoiNjkifQGZhYT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:52.321Z'
+ },
+ {
+ test: {
+ id: 'ZGI3ZeyIyIjoiNjkifQTc5Mj'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:52.409Z'
+ },
+ {
+ test: {
+ id: 'MDZjOeyIyIjoiNjkifQGJkYz'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:52.510Z'
},
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
+ {
+ test: {
+ id: 'ZmI3NeyIyIjoiNjkifQzUwMT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:52.614Z'
},
- browserVersion: {
- id: '1',
- name: '99.0.1'
+ {
+ test: {
+ id: 'NmY2YeyIyIjoiNjkifQTczOW'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:52.731Z'
},
- completedAt:
- '2023-08-18T03:17:11.369Z'
- },
- {
- test: {
- id: 'ZDJkYeyIyIjoiMjYifQzRkYj'
- },
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:11.450Z'
- }
- ]
- }
- ]
+ {
+ test: {
+ id: 'MjIwYeyIyIjoiNjkifQmUzZj'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:52.882Z'
+ },
+ {
+ test: {
+ id: 'ODg0OeyIyIjoiNjkifQWFlYm'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:53.038Z'
+ },
+ {
+ test: {
+ id: 'ZDQ2MeyIyIjoiNjkifQjlmZj'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:53.184Z'
+ },
+ {
+ test: {
+ id: 'MjdlYeyIyIjoiNjkifQTgyNj'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:53.317Z'
+ },
+ {
+ test: {
+ id: 'OGE5MeyIyIjoiNjkifQGZjOT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:53.428Z'
+ },
+ {
+ test: {
+ id: 'YWNlNeyIyIjoiNjkifQjQzOW'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:53.567Z'
+ }
+ ]
+ }
+ ]
+ }
},
{
- id: '9',
- metrics: {
- testsCount: 18,
- supportLevel: 'FULL',
- conflictsCount: 0,
- supportPercent: 100,
- testsFailedCount: 16,
- testsPassedCount: 2,
- shouldFormatted: false,
- mustFormatted: '16 of 16 passed',
- shouldAssertionsCount: 0,
- mustAssertionsCount: 16,
- unexpectedBehaviorCount: 0,
- unexpectedBehaviorsFormatted: false,
- shouldAssertionsFailedCount: 0,
- shouldAssertionsPassedCount: 0,
- mustAssertionsFailedCount: 0,
- mustAssertionsPassedCount: 16
+ isRequired: true,
+ at: {
+ id: '1',
+ name: 'JAWS'
+ },
+ browser: {
+ id: '1',
+ name: 'Firefox'
+ },
+ minimumAtVersion: {
+ id: '1',
+ name: '2021.2111.13'
},
- markedFinalAt: null,
- isFinal: false,
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: true,
at: {
id: '2',
name: 'NVDA'
},
+ browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '13',
+ metrics: {
+ testsCount: 14,
+ mayFormatted: false,
+ supportLevel: 'FULL',
+ commandsCount: 28,
+ mustFormatted: '124 of 124 passed',
+ conflictsCount: 0,
+ supportPercent: 100,
+ shouldFormatted: '36 of 36 passed',
+ testsFailedCount: 0,
+ testsPassedCount: 14,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 124,
+ assertionsFailedCount: 0,
+ assertionsPassedCount: 160,
+ shouldAssertionsCount: 36,
+ unexpectedBehaviorCount: 0,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 0,
+ mustAssertionsPassedCount: 124,
+ shouldAssertionsFailedCount: 0,
+ shouldAssertionsPassedCount: 36,
+ unexpectedBehaviorsFormatted: false,
+ severeImpactFailedAssertionCount: 0,
+ severeImpactPassedAssertionCount: 28,
+ moderateImpactFailedAssertionCount: 0,
+ moderateImpactPassedAssertionCount: 28
+ },
+ isFinal: true,
+ markedFinalAt: '2022-07-07T00:00:00.000Z',
+ issues: [],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'esmeralda-baggins'
+ },
+ testPlanReport: {
+ id: '13'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'YWYzOeyIyIjoiNjkifQTQ0MT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:53.698Z'
+ },
+ {
+ test: {
+ id: 'OGZjNeyIyIjoiNjkifQjQxZW'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:53.814Z'
+ },
+ {
+ test: {
+ id: 'NjM3ZeyIyIjoiNjkifQmUxYz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:53.921Z'
+ },
+ {
+ test: {
+ id: 'ZWQ0MeyIyIjoiNjkifQGZhYT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:54.038Z'
+ },
+ {
+ test: {
+ id: 'ZGI3ZeyIyIjoiNjkifQTc5Mj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:54.181Z'
+ },
+ {
+ test: {
+ id: 'MDZjOeyIyIjoiNjkifQGJkYz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:54.327Z'
+ },
+ {
+ test: {
+ id: 'ZmI3NeyIyIjoiNjkifQzUwMT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:54.421Z'
+ },
+ {
+ test: {
+ id: 'NmY2YeyIyIjoiNjkifQTczOW'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:54.541Z'
+ },
+ {
+ test: {
+ id: 'MjIwYeyIyIjoiNjkifQmUzZj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:54.666Z'
+ },
+ {
+ test: {
+ id: 'ODg0OeyIyIjoiNjkifQWFlYm'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:54.794Z'
+ },
+ {
+ test: {
+ id: 'ZDQ2MeyIyIjoiNjkifQjlmZj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:54.881Z'
+ },
+ {
+ test: {
+ id: 'MjdlYeyIyIjoiNjkifQTgyNj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:54.967Z'
+ },
+ {
+ test: {
+ id: 'OGE5MeyIyIjoiNjkifQGZjOT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:55.059Z'
+ },
+ {
+ test: {
+ id: 'YWNlNeyIyIjoiNjkifQjQzOW'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:55.140Z'
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ isRequired: true,
+ at: {
+ id: '2',
+ name: 'NVDA'
+ },
+ browser: {
+ id: '1',
+ name: 'Firefox'
+ },
+ minimumAtVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: true,
+ at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
+ },
+ browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: true,
+ at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
+ },
+ browser: {
+ id: '3',
+ name: 'Safari'
+ },
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '6',
+ metrics: {
+ testsCount: 7,
+ mayFormatted: false,
+ supportLevel: 'FAILING',
+ commandsCount: 16,
+ mustFormatted: '66 of 68 passed',
+ conflictsCount: 0,
+ supportPercent: 97,
+ shouldFormatted: '20 of 20 passed',
+ testsFailedCount: 2,
+ testsPassedCount: 5,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 68,
+ assertionsFailedCount: 2,
+ assertionsPassedCount: 86,
+ shouldAssertionsCount: 20,
+ unexpectedBehaviorCount: 0,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 2,
+ mustAssertionsPassedCount: 66,
+ shouldAssertionsFailedCount: 0,
+ shouldAssertionsPassedCount: 20,
+ unexpectedBehaviorsFormatted: false,
+ severeImpactFailedAssertionCount: 0,
+ severeImpactPassedAssertionCount: 16,
+ moderateImpactFailedAssertionCount: 0,
+ moderateImpactPassedAssertionCount: 16
+ },
+ isFinal: true,
+ markedFinalAt: '2022-07-06T00:00:00.000Z',
+ issues: [],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'tom-proudfeet'
+ },
+ testPlanReport: {
+ id: '6'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'NmUzMeyIyIjoiNjkifQmU0OT'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:45.554Z'
+ },
+ {
+ test: {
+ id: 'Y2UyYeyIyIjoiNjkifQ2Y1Mz'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:45.671Z'
+ },
+ {
+ test: {
+ id: 'ODc2OeyIyIjoiNjkifQTA1Yz'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:45.794Z'
+ },
+ {
+ test: {
+ id: 'OTgwZeyIyIjoiNjkifQDZjOG'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:45.909Z'
+ },
+ {
+ test: {
+ id: 'ODA3ZeyIyIjoiNjkifQjI4Y2'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:45.997Z'
+ },
+ {
+ test: {
+ id: 'OWI4MeyIyIjoiNjkifQzFlZD'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:46.091Z'
+ },
+ {
+ test: {
+ id: 'MzhiZeyIyIjoiNjkifQWE4Nj'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:46.189Z'
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
+ },
+ browser: {
+ id: '1',
+ name: 'Firefox'
+ },
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ request: {
+ query: testPlanReportStatusDialogQuery,
+ variables: { testPlanVersionId: '7' }
+ },
+ result: {
+ data: {
+ testPlanVersion: {
+ id: '7',
+ title: 'Select Only Combobox Example',
+ phase: 'DRAFT',
+ gitSha: '7c4b5dce23c74fcf280ed164bdb903e02e0e7726',
+ gitMessage:
+ 'Generate html source script to support aria-at-app (#646)',
+ updatedAt: '2022-03-17T18:34:51.000Z',
+ draftPhaseReachedAt: '2022-07-06T00:00:00.000Z',
+ candidatePhaseReachedAt: null,
+ recommendedPhaseTargetDate: null,
+ recommendedPhaseReachedAt: null,
+ testPlan: {
+ directory: 'combobox-select-only'
+ },
+ testPlanReportStatuses: [
+ {
+ isRequired: true,
+ at: {
+ id: '1',
+ name: 'JAWS'
+ },
+ browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '1',
+ name: 'JAWS'
+ },
+ browser: {
+ id: '1',
+ name: 'Firefox'
+ },
+ minimumAtVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: true,
+ at: {
+ id: '2',
+ name: 'NVDA'
+ },
+ browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '2',
+ name: 'NVDA'
+ },
+ browser: {
+ id: '1',
+ name: 'Firefox'
+ },
+ minimumAtVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '2',
+ metrics: {
+ testsCount: 21,
+ mayFormatted: false,
+ supportLevel: 'FAILING',
+ commandsCount: 24,
+ mustFormatted: '118 of 122 passed',
+ conflictsCount: 3,
+ supportPercent: 97,
+ shouldFormatted: '34 of 36 passed',
+ testsFailedCount: 6,
+ testsPassedCount: 15,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 122,
+ assertionsFailedCount: 6,
+ assertionsPassedCount: 152,
+ shouldAssertionsCount: 36,
+ unexpectedBehaviorCount: 3,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 4,
+ mustAssertionsPassedCount: 118,
+ shouldAssertionsFailedCount: 2,
+ shouldAssertionsPassedCount: 34,
+ unexpectedBehaviorsFormatted: '3 found',
+ severeImpactFailedAssertionCount: 1,
+ severeImpactPassedAssertionCount: 23,
+ moderateImpactFailedAssertionCount: 2,
+ moderateImpactPassedAssertionCount: 22
+ },
+ isFinal: false,
+ markedFinalAt: null,
+ issues: [
+ {
+ link: 'https://github.com/bocoup/aria-at/issues/128#issue-2157878584',
+ isOpen: true,
+ feedbackType: 'FEEDBACK'
+ }
+ ],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'tom-proudfeet'
+ },
+ testPlanReport: {
+ id: '2'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'Nzg5NeyIyIjoiNyJ9zNjZj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:38.949Z'
+ },
+ {
+ test: {
+ id: 'MmY0YeyIyIjoiNyJ9jRkZD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:39.070Z'
+ },
+ {
+ test: {
+ id: 'ZjUwNeyIyIjoiNyJ9mE2ZT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:39.180Z'
+ },
+ {
+ test: {
+ id: 'MDNiMeyIyIjoiNyJ9Dk1MT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:39.292Z'
+ },
+ {
+ test: {
+ id: 'MjRmNeyIyIjoiNyJ92MyMT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:39.406Z'
+ },
+ {
+ test: {
+ id: 'ZmVlMeyIyIjoiNyJ9mUyYj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: null
+ },
+ {
+ test: {
+ id: 'YWFiNeyIyIjoiNyJ9zE2Zj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:39.640Z'
+ },
+ {
+ test: {
+ id: 'YjZkYeyIyIjoiNyJ9WIxZm'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:39.761Z'
+ },
+ {
+ test: {
+ id: 'ZmIzMeyIyIjoiNyJ9TQ1NW'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:39.888Z'
+ },
+ {
+ test: {
+ id: 'MmZkNeyIyIjoiNyJ9zIwN2'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:40.006Z'
+ },
+ {
+ test: {
+ id: 'ZmQwOeyIyIjoiNyJ9DEzYz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:40.122Z'
+ },
+ {
+ test: {
+ id: 'MGViNeyIyIjoiNyJ9GQ3MT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:40.234Z'
+ },
+ {
+ test: {
+ id: 'YTg5MeyIyIjoiNyJ9WEzOT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:40.355Z'
+ },
+ {
+ test: {
+ id: 'NTRjMeyIyIjoiNyJ9zQ0OD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:40.467Z'
+ },
+ {
+ test: {
+ id: 'MjRlZeyIyIjoiNyJ9DcyY2'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:40.588Z'
+ },
+ {
+ test: {
+ id: 'YWQzNeyIyIjoiNyJ9mE2Nm'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:40.712Z'
+ },
+ {
+ test: {
+ id: 'OTYxOeyIyIjoiNyJ9TdmYj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:40.826Z'
+ },
+ {
+ test: {
+ id: 'MjgzNeyIyIjoiNyJ9TZjNz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:40.948Z'
+ },
+ {
+ test: {
+ id: 'NWNiZeyIyIjoiNyJ9jI2MD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:41.075Z'
+ }
+ ]
+ },
+ {
+ tester: {
+ username: 'esmeralda-baggins'
+ },
+ testPlanReport: {
+ id: '2'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'Nzg5NeyIyIjoiNyJ9zNjZj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:36.666Z'
+ },
+ {
+ test: {
+ id: 'MmY0YeyIyIjoiNyJ9jRkZD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:36.793Z'
+ },
+ {
+ test: {
+ id: 'ZjUwNeyIyIjoiNyJ9mE2ZT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:36.914Z'
+ },
+ {
+ test: {
+ id: 'MDNiMeyIyIjoiNyJ9Dk1MT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:37.031Z'
+ },
+ {
+ test: {
+ id: 'MjRmNeyIyIjoiNyJ92MyMT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:37.150Z'
+ },
+ {
+ test: {
+ id: 'ZmVlMeyIyIjoiNyJ9mUyYj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: null
+ },
+ {
+ test: {
+ id: 'YWFiNeyIyIjoiNyJ9zE2Zj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:37.384Z'
+ },
+ {
+ test: {
+ id: 'YjZkYeyIyIjoiNyJ9WIxZm'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:37.512Z'
+ },
+ {
+ test: {
+ id: 'ZmIzMeyIyIjoiNyJ9TQ1NW'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:37.638Z'
+ },
+ {
+ test: {
+ id: 'MmZkNeyIyIjoiNyJ9zIwN2'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:37.760Z'
+ },
+ {
+ test: {
+ id: 'ZmQwOeyIyIjoiNyJ9DEzYz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:37.883Z'
+ },
+ {
+ test: {
+ id: 'MGViNeyIyIjoiNyJ9GQ3MT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:38.014Z'
+ },
+ {
+ test: {
+ id: 'YTg5MeyIyIjoiNyJ9WEzOT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:38.145Z'
+ },
+ {
+ test: {
+ id: 'NTRjMeyIyIjoiNyJ9zQ0OD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:38.268Z'
+ },
+ {
+ test: {
+ id: 'MjRlZeyIyIjoiNyJ9DcyY2'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:38.382Z'
+ },
+ {
+ test: {
+ id: 'YWQzNeyIyIjoiNyJ9mE2Nm'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:38.481Z'
+ },
+ {
+ test: {
+ id: 'OTYxOeyIyIjoiNyJ9TdmYj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:38.596Z'
+ },
+ {
+ test: {
+ id: 'MjgzNeyIyIjoiNyJ9TZjNz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:38.701Z'
+ },
+ {
+ test: {
+ id: 'NWNiZeyIyIjoiNyJ9jI2MD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:38.811Z'
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ isRequired: true,
+ at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
+ },
+ browser: {
+ id: '3',
+ name: 'Safari'
+ },
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
+ },
+ browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
+ },
+ browser: {
+ id: '1',
+ name: 'Firefox'
+ },
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ request: {
+ query: testPlanReportStatusDialogQuery,
+ variables: { testPlanVersionId: '26' }
+ },
+ result: {
+ data: {
+ testPlanVersion: {
+ id: '24',
+ title: 'Modal Dialog Example',
+ phase: 'CANDIDATE',
+ gitSha: '5fe7afd82fe51c185b8661276105190a59d47322',
+ gitMessage: 'Task 7: delete incorrect instructions (#733)',
+ updatedAt: '2022-05-26T16:10:10.000Z',
+ draftPhaseReachedAt: '2022-07-06T00:00:00.000Z',
+ candidatePhaseReachedAt: '2022-07-06T00:00:00.000Z',
+ recommendedPhaseTargetDate: '2023-01-02T00:00:00.000Z',
+ recommendedPhaseReachedAt: null,
+ testPlan: {
+ directory: 'modal-dialog'
+ },
+ testPlanReportStatuses: [
+ {
+ isRequired: true,
+ at: {
+ id: '1',
+ name: 'JAWS'
+ },
+ browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '3',
+ metrics: {
+ testsCount: 18,
+ mayFormatted: false,
+ supportLevel: 'FAILING',
+ commandsCount: 26,
+ mustFormatted: '115 of 117 passed',
+ conflictsCount: 0,
+ supportPercent: 98,
+ shouldFormatted: '25 of 26 passed',
+ testsFailedCount: 2,
+ testsPassedCount: 16,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 117,
+ assertionsFailedCount: 3,
+ assertionsPassedCount: 140,
+ shouldAssertionsCount: 26,
+ unexpectedBehaviorCount: 1,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 2,
+ mustAssertionsPassedCount: 115,
+ shouldAssertionsFailedCount: 1,
+ shouldAssertionsPassedCount: 25,
+ unexpectedBehaviorsFormatted: '1 found',
+ severeImpactFailedAssertionCount: 0,
+ severeImpactPassedAssertionCount: 26,
+ moderateImpactFailedAssertionCount: 1,
+ moderateImpactPassedAssertionCount: 25
+ },
+ isFinal: true,
+ markedFinalAt: '2022-07-06T00:00:00.000Z',
+ issues: [],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'esmeralda-baggins'
+ },
+ testPlanReport: {
+ id: '3'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'ZjE0NeyIyIjoiMjQifQmI0NT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:41.177Z'
+ },
+ {
+ test: {
+ id: 'YjZlNeyIyIjoiMjQifQTc5ZW'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:41.256Z'
+ },
+ {
+ test: {
+ id: 'NWM0MeyIyIjoiMjQifQzhiYz'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:41.349Z'
+ },
+ {
+ test: {
+ id: 'YzM0ZeyIyIjoiMjQifQmRmMz'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:41.419Z'
+ },
+ {
+ test: {
+ id: 'ZjVjMeyIyIjoiMjQifQDRhY2'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:41.496Z'
+ },
+ {
+ test: {
+ id: 'YmUzMeyIyIjoiMjQifQmRmNm'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:41.574Z'
+ },
+ {
+ test: {
+ id: 'ZGJmMeyIyIjoiMjQifQzU5Yz'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:41.661Z'
+ },
+ {
+ test: {
+ id: 'Nzg1OeyIyIjoiMjQifQTYxM2'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:41.741Z'
+ },
+ {
+ test: {
+ id: 'ZTI0MeyIyIjoiMjQifQzM4YT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:41.823Z'
+ },
+ {
+ test: {
+ id: 'MzY5ZeyIyIjoiMjQifQmQ0OT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:41.950Z'
+ },
+ {
+ test: {
+ id: 'ZjVmYeyIyIjoiMjQifQjJjYW'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:42.044Z'
+ },
+ {
+ test: {
+ id: 'ZTMwNeyIyIjoiMjQifQzI5Nz'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:42.112Z'
+ },
+ {
+ test: {
+ id: 'NGY0MeyIyIjoiMjQifQ2FjMj'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:42.191Z'
+ },
+ {
+ test: {
+ id: 'OTI0OeyIyIjoiMjQifQTU1ZT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:42.271Z'
+ },
+ {
+ test: {
+ id: 'MDRhMeyIyIjoiMjQifQWEzMj'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:42.344Z'
+ },
+ {
+ test: {
+ id: 'ZThlZeyIyIjoiMjQifQjQ2Nz'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:42.412Z'
+ },
+ {
+ test: {
+ id: 'NjhjMeyIyIjoiMjQifQGE0ND'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:42.482Z'
+ },
+ {
+ test: {
+ id: 'YTAzZeyIyIjoiMjQifQTc5ZD'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:42.575Z'
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '1',
+ name: 'JAWS'
+ },
+ browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: null,
+ exactAtVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ testPlanReport: {
+ id: '105',
+ metrics: {},
+ isFinal: false,
+ markedFinalAt: null,
+ issues: [],
+ draftTestPlanRuns: []
+ }
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '1',
+ name: 'JAWS'
+ },
+ browser: {
+ id: '1',
+ name: 'Firefox'
+ },
+ minimumAtVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '8',
+ metrics: {
+ testsCount: 18,
+ mayFormatted: false,
+ supportLevel: 'FULL',
+ commandsCount: 26,
+ mustFormatted: '117 of 117 passed',
+ conflictsCount: 0,
+ supportPercent: 100,
+ shouldFormatted: '26 of 26 passed',
+ testsFailedCount: 0,
+ testsPassedCount: 18,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 117,
+ assertionsFailedCount: 0,
+ assertionsPassedCount: 143,
+ shouldAssertionsCount: 26,
+ unexpectedBehaviorCount: 0,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 0,
+ mustAssertionsPassedCount: 117,
+ shouldAssertionsFailedCount: 0,
+ shouldAssertionsPassedCount: 26,
+ unexpectedBehaviorsFormatted: false,
+ severeImpactFailedAssertionCount: 0,
+ severeImpactPassedAssertionCount: 26,
+ moderateImpactFailedAssertionCount: 0,
+ moderateImpactPassedAssertionCount: 26
+ },
+ isFinal: false,
+ markedFinalAt: null,
+ issues: [],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'esmeralda-baggins'
+ },
+ testPlanReport: {
+ id: '8'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'ZjE0NeyIyIjoiMjQifQmI0NT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:46.300Z'
+ },
+ {
+ test: {
+ id: 'YjZlNeyIyIjoiMjQifQTc5ZW'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:46.396Z'
+ },
+ {
+ test: {
+ id: 'NWM0MeyIyIjoiMjQifQzhiYz'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:46.490Z'
+ },
+ {
+ test: {
+ id: 'YzM0ZeyIyIjoiMjQifQmRmMz'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:46.572Z'
+ },
+ {
+ test: {
+ id: 'ZjVjMeyIyIjoiMjQifQDRhY2'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:46.656Z'
+ },
+ {
+ test: {
+ id: 'YmUzMeyIyIjoiMjQifQmRmNm'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:46.743Z'
+ },
+ {
+ test: {
+ id: 'ZGJmMeyIyIjoiMjQifQzU5Yz'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:46.828Z'
+ },
+ {
+ test: {
+ id: 'Nzg1OeyIyIjoiMjQifQTYxM2'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:46.912Z'
+ },
+ {
+ test: {
+ id: 'ZTI0MeyIyIjoiMjQifQzM4YT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:46.990Z'
+ },
+ {
+ test: {
+ id: 'MzY5ZeyIyIjoiMjQifQmQ0OT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:47.087Z'
+ },
+ {
+ test: {
+ id: 'ZjVmYeyIyIjoiMjQifQjJjYW'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:47.215Z'
+ },
+ {
+ test: {
+ id: 'ZTMwNeyIyIjoiMjQifQzI5Nz'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:47.355Z'
+ },
+ {
+ test: {
+ id: 'NGY0MeyIyIjoiMjQifQ2FjMj'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:47.484Z'
+ },
+ {
+ test: {
+ id: 'OTI0OeyIyIjoiMjQifQTU1ZT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:47.614Z'
+ },
+ {
+ test: {
+ id: 'MDRhMeyIyIjoiMjQifQWEzMj'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:47.738Z'
+ },
+ {
+ test: {
+ id: 'ZThlZeyIyIjoiMjQifQjQ2Nz'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:47.862Z'
+ },
+ {
+ test: {
+ id: 'NjhjMeyIyIjoiMjQifQGE0ND'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:47.981Z'
+ },
+ {
+ test: {
+ id: 'YTAzZeyIyIjoiMjQifQTc5ZD'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:48.105Z'
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ isRequired: true,
+ at: {
+ id: '2',
+ name: 'NVDA'
+ },
+ browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '4',
+ metrics: {
+ testsCount: 18,
+ mayFormatted: false,
+ supportLevel: 'FAILING',
+ commandsCount: 26,
+ mustFormatted: '115 of 117 passed',
+ conflictsCount: 0,
+ supportPercent: 98,
+ shouldFormatted: '25 of 26 passed',
+ testsFailedCount: 2,
+ testsPassedCount: 16,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 117,
+ assertionsFailedCount: 3,
+ assertionsPassedCount: 140,
+ shouldAssertionsCount: 26,
+ unexpectedBehaviorCount: 1,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 2,
+ mustAssertionsPassedCount: 115,
+ shouldAssertionsFailedCount: 1,
+ shouldAssertionsPassedCount: 25,
+ unexpectedBehaviorsFormatted: '1 found',
+ severeImpactFailedAssertionCount: 0,
+ severeImpactPassedAssertionCount: 26,
+ moderateImpactFailedAssertionCount: 1,
+ moderateImpactPassedAssertionCount: 25
+ },
+ isFinal: true,
+ markedFinalAt: '2022-07-06T00:00:00.000Z',
+ issues: [],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'esmeralda-baggins'
+ },
+ testPlanReport: {
+ id: '4'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'ZjE0NeyIyIjoiMjQifQmI0NT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:42.683Z'
+ },
+ {
+ test: {
+ id: 'YjZlNeyIyIjoiMjQifQTc5ZW'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:42.772Z'
+ },
+ {
+ test: {
+ id: 'NWM0MeyIyIjoiMjQifQzhiYz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:42.848Z'
+ },
+ {
+ test: {
+ id: 'YzM0ZeyIyIjoiMjQifQmRmMz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:42.928Z'
+ },
+ {
+ test: {
+ id: 'ZjVjMeyIyIjoiMjQifQDRhY2'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:43.005Z'
+ },
+ {
+ test: {
+ id: 'YmUzMeyIyIjoiMjQifQmRmNm'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:43.093Z'
+ },
+ {
+ test: {
+ id: 'ZGJmMeyIyIjoiMjQifQzU5Yz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:43.173Z'
+ },
+ {
+ test: {
+ id: 'Nzg1OeyIyIjoiMjQifQTYxM2'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:43.245Z'
+ },
+ {
+ test: {
+ id: 'ZTI0MeyIyIjoiMjQifQzM4YT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:43.318Z'
+ },
+ {
+ test: {
+ id: 'MzY5ZeyIyIjoiMjQifQmQ0OT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:43.399Z'
+ },
+ {
+ test: {
+ id: 'ZjVmYeyIyIjoiMjQifQjJjYW'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:43.473Z'
+ },
+ {
+ test: {
+ id: 'ZTMwNeyIyIjoiMjQifQzI5Nz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:43.554Z'
+ },
+ {
+ test: {
+ id: 'NGY0MeyIyIjoiMjQifQ2FjMj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:43.643Z'
+ },
+ {
+ test: {
+ id: 'OTI0OeyIyIjoiMjQifQTU1ZT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:43.738Z'
+ },
+ {
+ test: {
+ id: 'MDRhMeyIyIjoiMjQifQWEzMj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:43.844Z'
+ },
+ {
+ test: {
+ id: 'ZThlZeyIyIjoiMjQifQjQ2Nz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:43.950Z'
+ },
+ {
+ test: {
+ id: 'NjhjMeyIyIjoiMjQifQGE0ND'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:44.078Z'
+ },
+ {
+ test: {
+ id: 'YTAzZeyIyIjoiMjQifQTc5ZD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:44.219Z'
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '2',
+ name: 'NVDA'
+ },
+ browser: {
+ id: '1',
+ name: 'Firefox'
+ },
+ minimumAtVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '9',
+ metrics: {
+ testsCount: 18,
+ mayFormatted: false,
+ supportLevel: 'FULL',
+ commandsCount: 26,
+ mustFormatted: '117 of 117 passed',
+ conflictsCount: 0,
+ supportPercent: 100,
+ shouldFormatted: '26 of 26 passed',
+ testsFailedCount: 0,
+ testsPassedCount: 18,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 117,
+ assertionsFailedCount: 0,
+ assertionsPassedCount: 143,
+ shouldAssertionsCount: 26,
+ unexpectedBehaviorCount: 0,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 0,
+ mustAssertionsPassedCount: 117,
+ shouldAssertionsFailedCount: 0,
+ shouldAssertionsPassedCount: 26,
+ unexpectedBehaviorsFormatted: false,
+ severeImpactFailedAssertionCount: 0,
+ severeImpactPassedAssertionCount: 26,
+ moderateImpactFailedAssertionCount: 0,
+ moderateImpactPassedAssertionCount: 26
+ },
+ isFinal: false,
+ markedFinalAt: null,
+ issues: [],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'esmeralda-baggins'
+ },
+ testPlanReport: {
+ id: '9'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'ZjE0NeyIyIjoiMjQifQmI0NT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:48.229Z'
+ },
+ {
+ test: {
+ id: 'YjZlNeyIyIjoiMjQifQTc5ZW'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:48.339Z'
+ },
+ {
+ test: {
+ id: 'NWM0MeyIyIjoiMjQifQzhiYz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:48.439Z'
+ },
+ {
+ test: {
+ id: 'YzM0ZeyIyIjoiMjQifQmRmMz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:48.537Z'
+ },
+ {
+ test: {
+ id: 'ZjVjMeyIyIjoiMjQifQDRhY2'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:48.636Z'
+ },
+ {
+ test: {
+ id: 'YmUzMeyIyIjoiMjQifQmRmNm'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:48.736Z'
+ },
+ {
+ test: {
+ id: 'ZGJmMeyIyIjoiMjQifQzU5Yz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:48.824Z'
+ },
+ {
+ test: {
+ id: 'Nzg1OeyIyIjoiMjQifQTYxM2'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:48.901Z'
+ },
+ {
+ test: {
+ id: 'ZTI0MeyIyIjoiMjQifQzM4YT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:48.978Z'
+ },
+ {
+ test: {
+ id: 'MzY5ZeyIyIjoiMjQifQmQ0OT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:49.070Z'
+ },
+ {
+ test: {
+ id: 'ZjVmYeyIyIjoiMjQifQjJjYW'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:49.161Z'
+ },
+ {
+ test: {
+ id: 'ZTMwNeyIyIjoiMjQifQzI5Nz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:49.264Z'
+ },
+ {
+ test: {
+ id: 'NGY0MeyIyIjoiMjQifQ2FjMj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:49.387Z'
+ },
+ {
+ test: {
+ id: 'OTI0OeyIyIjoiMjQifQTU1ZT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:49.527Z'
+ },
+ {
+ test: {
+ id: 'MDRhMeyIyIjoiMjQifQWEzMj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:49.646Z'
+ },
+ {
+ test: {
+ id: 'ZThlZeyIyIjoiMjQifQjQ2Nz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:49.747Z'
+ },
+ {
+ test: {
+ id: 'NjhjMeyIyIjoiMjQifQGE0ND'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:49.847Z'
+ },
+ {
+ test: {
+ id: 'YTAzZeyIyIjoiMjQifQTc5ZD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:49.951Z'
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ isRequired: true,
+ at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
+ },
+ browser: {
+ id: '3',
+ name: 'Safari'
+ },
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '5',
+ metrics: {
+ testsCount: 11,
+ mayFormatted: false,
+ supportLevel: 'FAILING',
+ commandsCount: 20,
+ mustFormatted: '88 of 90 passed',
+ conflictsCount: 0,
+ supportPercent: 98,
+ shouldFormatted: '19 of 20 passed',
+ testsFailedCount: 2,
+ testsPassedCount: 9,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 90,
+ assertionsFailedCount: 3,
+ assertionsPassedCount: 107,
+ shouldAssertionsCount: 20,
+ unexpectedBehaviorCount: 1,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 2,
+ mustAssertionsPassedCount: 88,
+ shouldAssertionsFailedCount: 1,
+ shouldAssertionsPassedCount: 19,
+ unexpectedBehaviorsFormatted: '1 found',
+ severeImpactFailedAssertionCount: 0,
+ severeImpactPassedAssertionCount: 20,
+ moderateImpactFailedAssertionCount: 1,
+ moderateImpactPassedAssertionCount: 19
+ },
+ isFinal: true,
+ markedFinalAt: '2022-07-06T00:00:00.000Z',
+ issues: [],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'esmeralda-baggins'
+ },
+ testPlanReport: {
+ id: '5'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'NjM0MeyIyIjoiMjQifQTdiZG'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:44.402Z'
+ },
+ {
+ test: {
+ id: 'YWYzOeyIyIjoiMjQifQDBjN2'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:44.489Z'
+ },
+ {
+ test: {
+ id: 'ZmJjYeyIyIjoiMjQifQWJiNT'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:44.594Z'
+ },
+ {
+ test: {
+ id: 'MjU2NeyIyIjoiMjQifQTk2YW'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:44.694Z'
+ },
+ {
+ test: {
+ id: 'MWNlNeyIyIjoiMjQifQTRhNT'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:44.781Z'
+ },
+ {
+ test: {
+ id: 'YzFlYeyIyIjoiMjQifQjE5Yj'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:44.877Z'
+ },
+ {
+ test: {
+ id: 'N2UwMeyIyIjoiMjQifQTQ1OT'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:44.966Z'
+ },
+ {
+ test: {
+ id: 'OTYwOeyIyIjoiMjQifQTE3ND'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:45.061Z'
+ },
+ {
+ test: {
+ id: 'OWI2MeyIyIjoiMjQifQmE0ZD'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:45.165Z'
+ },
+ {
+ test: {
+ id: 'YTU0MeyIyIjoiMjQifQjNhNj'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:45.296Z'
+ },
+ {
+ test: {
+ id: 'NTM4MeyIyIjoiMjQifQGVlNm'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:45.433Z'
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
+ },
+ browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '11',
+ metrics: {
+ testsCount: 11,
+ mayFormatted: false,
+ supportLevel: 'FULL',
+ commandsCount: 20,
+ mustFormatted: '90 of 90 passed',
+ conflictsCount: 0,
+ supportPercent: 100,
+ shouldFormatted: '20 of 20 passed',
+ testsFailedCount: 0,
+ testsPassedCount: 11,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 90,
+ assertionsFailedCount: 0,
+ assertionsPassedCount: 110,
+ shouldAssertionsCount: 20,
+ unexpectedBehaviorCount: 0,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 0,
+ mustAssertionsPassedCount: 90,
+ shouldAssertionsFailedCount: 0,
+ shouldAssertionsPassedCount: 20,
+ unexpectedBehaviorsFormatted: false,
+ severeImpactFailedAssertionCount: 0,
+ severeImpactPassedAssertionCount: 20,
+ moderateImpactFailedAssertionCount: 0,
+ moderateImpactPassedAssertionCount: 20
+ },
+ isFinal: false,
+ markedFinalAt: null,
+ issues: [],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'esmeralda-baggins'
+ },
+ testPlanReport: {
+ id: '11'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'NjM0MeyIyIjoiMjQifQTdiZG'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:51.034Z'
+ },
+ {
+ test: {
+ id: 'YWYzOeyIyIjoiMjQifQDBjN2'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:51.120Z'
+ },
+ {
+ test: {
+ id: 'ZmJjYeyIyIjoiMjQifQWJiNT'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:51.205Z'
+ },
+ {
+ test: {
+ id: 'MjU2NeyIyIjoiMjQifQTk2YW'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:51.313Z'
+ },
+ {
+ test: {
+ id: 'MWNlNeyIyIjoiMjQifQTRhNT'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:51.410Z'
+ },
+ {
+ test: {
+ id: 'YzFlYeyIyIjoiMjQifQjE5Yj'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:51.489Z'
+ },
+ {
+ test: {
+ id: 'N2UwMeyIyIjoiMjQifQTQ1OT'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:51.561Z'
+ },
+ {
+ test: {
+ id: 'OTYwOeyIyIjoiMjQifQTE3ND'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:51.648Z'
+ },
+ {
+ test: {
+ id: 'OWI2MeyIyIjoiMjQifQmE0ZD'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:51.736Z'
+ },
+ {
+ test: {
+ id: 'YTU0MeyIyIjoiMjQifQjNhNj'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:51.832Z'
+ },
+ {
+ test: {
+ id: 'NTM4MeyIyIjoiMjQifQGVlNm'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:51.954Z'
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
+ },
+ browser: {
+ id: '1',
+ name: 'Firefox'
+ },
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '10',
+ metrics: {
+ testsCount: 11,
+ mayFormatted: false,
+ supportLevel: 'FULL',
+ commandsCount: 20,
+ mustFormatted: '90 of 90 passed',
+ conflictsCount: 0,
+ supportPercent: 100,
+ shouldFormatted: '20 of 20 passed',
+ testsFailedCount: 0,
+ testsPassedCount: 11,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 90,
+ assertionsFailedCount: 0,
+ assertionsPassedCount: 110,
+ shouldAssertionsCount: 20,
+ unexpectedBehaviorCount: 0,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 0,
+ mustAssertionsPassedCount: 90,
+ shouldAssertionsFailedCount: 0,
+ shouldAssertionsPassedCount: 20,
+ unexpectedBehaviorsFormatted: false,
+ severeImpactFailedAssertionCount: 0,
+ severeImpactPassedAssertionCount: 20,
+ moderateImpactFailedAssertionCount: 0,
+ moderateImpactPassedAssertionCount: 20
+ },
+ isFinal: false,
+ markedFinalAt: null,
+ issues: [],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'esmeralda-baggins'
+ },
+ testPlanReport: {
+ id: '10'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'NjM0MeyIyIjoiMjQifQTdiZG'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:50.048Z'
+ },
+ {
+ test: {
+ id: 'YWYzOeyIyIjoiMjQifQDBjN2'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:50.128Z'
+ },
+ {
+ test: {
+ id: 'ZmJjYeyIyIjoiMjQifQWJiNT'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:50.203Z'
+ },
+ {
+ test: {
+ id: 'MjU2NeyIyIjoiMjQifQTk2YW'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:50.278Z'
+ },
+ {
+ test: {
+ id: 'MWNlNeyIyIjoiMjQifQTRhNT'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:50.355Z'
+ },
+ {
+ test: {
+ id: 'YzFlYeyIyIjoiMjQifQjE5Yj'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:50.426Z'
+ },
+ {
+ test: {
+ id: 'N2UwMeyIyIjoiMjQifQTQ1OT'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:50.508Z'
+ },
+ {
+ test: {
+ id: 'OTYwOeyIyIjoiMjQifQTE3ND'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:50.591Z'
+ },
+ {
+ test: {
+ id: 'OWI2MeyIyIjoiMjQifQmE0ZD'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:50.687Z'
+ },
+ {
+ test: {
+ id: 'YTU0MeyIyIjoiMjQifQjNhNj'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:50.788Z'
+ },
+ {
+ test: {
+ id: 'NTM4MeyIyIjoiMjQifQGVlNm'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt:
+ '2024-04-25T16:44:50.914Z'
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ request: {
+ query: testPlanReportStatusDialogQuery,
+ variables: { testPlanVersionId: '34' }
+ },
+ result: {
+ data: {
+ testPlanVersion: {
+ id: '31',
+ title: 'Toggle Button',
+ phase: 'DRAFT',
+ gitSha: '022340081280b8cafb8ae0716a5b67e9ab942ef4',
+ gitMessage:
+ 'Delete duplicated assertion for operating a not pressed togle button (VoiceOver) (#716)',
+ updatedAt: '2022-05-18T20:51:40.000Z',
+ draftPhaseReachedAt: '2022-07-06T00:00:00.000Z',
+ candidatePhaseReachedAt: null,
+ recommendedPhaseTargetDate: null,
+ recommendedPhaseReachedAt: null,
+ testPlan: {
+ directory: 'toggle-button'
+ },
+ testPlanReportStatuses: [
+ {
+ isRequired: true,
+ at: {
+ id: '1',
+ name: 'JAWS'
+ },
+ browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '1',
+ metrics: {
+ testsCount: 16,
+ mayFormatted: false,
+ supportLevel: 'FAILING',
+ commandsCount: 26,
+ mustFormatted: '86 of 88 passed',
+ conflictsCount: 0,
+ supportPercent: 98,
+ shouldFormatted: '25 of 26 passed',
+ testsFailedCount: 6,
+ testsPassedCount: 10,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 88,
+ assertionsFailedCount: 3,
+ assertionsPassedCount: 111,
+ shouldAssertionsCount: 26,
+ unexpectedBehaviorCount: 1,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 2,
+ mustAssertionsPassedCount: 86,
+ shouldAssertionsFailedCount: 1,
+ shouldAssertionsPassedCount: 25,
+ unexpectedBehaviorsFormatted: '1 found',
+ severeImpactFailedAssertionCount: 0,
+ severeImpactPassedAssertionCount: 26,
+ moderateImpactFailedAssertionCount: 1,
+ moderateImpactPassedAssertionCount: 25
+ },
+ isFinal: false,
+ markedFinalAt: null,
+ issues: [],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'esmeralda-baggins'
+ },
+ testPlanReport: {
+ id: '1'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'MTExZeyIyIjoiMzEifQWZhZG'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:35.281Z'
+ },
+ {
+ test: {
+ id: 'MzJkZeyIyIjoiMzEifQTAzMm'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt: null
+ },
+ {
+ test: {
+ id: 'NDBjMeyIyIjoiMzEifQjc1NT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt: null
+ },
+ {
+ test: {
+ id: 'MjE2MeyIyIjoiMzEifQ2M0NW'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt: null
+ },
+ {
+ test: {
+ id: 'MWZiZeyIyIjoiMzEifQjhhYz'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:35.541Z'
+ },
+ {
+ test: {
+ id: 'NmI4NeyIyIjoiMzEifQDU2OD'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:35.636Z'
+ },
+ {
+ test: {
+ id: 'YmExNeyIyIjoiMzEifQWE5Nj'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:35.730Z'
+ },
+ {
+ test: {
+ id: 'YzA3NeyIyIjoiMzEifQGZhYT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:35.831Z'
+ },
+ {
+ test: {
+ id: 'YmYxOeyIyIjoiMzEifQDAxY2'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:35.928Z'
+ },
+ {
+ test: {
+ id: 'YzIwOeyIyIjoiMzEifQGE2Yz'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:36.034Z'
+ },
+ {
+ test: {
+ id: 'YWMwNeyIyIjoiMzEifQDQ5MG'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:36.126Z'
+ },
+ {
+ test: {
+ id: 'MjQyMeyIyIjoiMzEifQWExMm'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:36.210Z'
+ },
+ {
+ test: {
+ id: 'NDFiYeyIyIjoiMzEifQzg4MD'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:36.332Z'
+ },
+ {
+ test: {
+ id: 'M2RmNeyIyIjoiMzEifQzQ0MG'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:36.409Z'
+ },
+ {
+ test: {
+ id: 'ODhlYeyIyIjoiMzEifQmVmMT'
+ },
+ atVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:36.510Z'
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '1',
+ name: 'JAWS'
+ },
browser: {
id: '1',
name: 'Firefox'
},
- issues: [],
- draftTestPlanRuns: [
- {
- tester: {
- username: 'esmeralda-baggins'
- },
- testPlanReport: {
- id: '9'
- },
- testResults: [
- {
- test: {
- id: 'MThhNeyIyIjoiMjYifQmEyMj'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:11.059Z'
- },
- {
- test: {
- id: 'ODY5MeyIyIjoiMjYifQzhmNW'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:11.137Z'
- },
- {
- test: {
- id: 'NWVkNeyIyIjoiMjYifQTZkOT'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:11.218Z'
- }
- ]
- }
- ]
+ minimumAtVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
},
{
- id: '3',
- metrics: {
- testsCount: 18,
- supportLevel: 'FAILING',
- conflictsCount: 0,
- supportPercent: 88,
- testsFailedCount: 16,
- testsPassedCount: 2,
- shouldFormatted: false,
- mustFormatted: '14 of 16 passed',
- shouldAssertionsCount: 0,
- mustAssertionsCount: 16,
- unexpectedBehaviorCount: 1,
- unexpectedBehaviorsFormatted: '1 found',
- shouldAssertionsFailedCount: 0,
- shouldAssertionsPassedCount: 0,
- mustAssertionsFailedCount: 2,
- mustAssertionsPassedCount: 14
- },
- markedFinalAt: '2022-07-06T00:00:00.000Z',
- isFinal: true,
+ isRequired: true,
at: {
- id: '1',
- name: 'JAWS'
+ id: '2',
+ name: 'NVDA'
},
browser: {
id: '2',
name: 'Chrome'
},
- issues: [],
- draftTestPlanRuns: [
- {
- tester: {
- username: 'esmeralda-baggins'
- },
- testPlanReport: {
- id: '3'
- },
- testResults: [
- {
- test: {
- id: 'MThhNeyIyIjoiMjYifQmEyMj'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:09.074Z'
+ minimumAtVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '14',
+ metrics: {
+ testsCount: 16,
+ mayFormatted: false,
+ supportLevel: 'FULL',
+ commandsCount: 36,
+ mustFormatted: '128 of 128 passed',
+ conflictsCount: 0,
+ supportPercent: 100,
+ shouldFormatted: '36 of 36 passed',
+ testsFailedCount: 0,
+ testsPassedCount: 16,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 128,
+ assertionsFailedCount: 0,
+ assertionsPassedCount: 164,
+ shouldAssertionsCount: 36,
+ unexpectedBehaviorCount: 0,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 0,
+ mustAssertionsPassedCount: 128,
+ shouldAssertionsFailedCount: 0,
+ shouldAssertionsPassedCount: 36,
+ unexpectedBehaviorsFormatted: false,
+ severeImpactFailedAssertionCount: 0,
+ severeImpactPassedAssertionCount: 36,
+ moderateImpactFailedAssertionCount: 0,
+ moderateImpactPassedAssertionCount: 36
+ },
+ isFinal: true,
+ markedFinalAt: '2022-07-07T00:00:00.000Z',
+ issues: [],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'esmeralda-baggins'
},
- {
- test: {
- id: 'NWVkNeyIyIjoiMjYifQTZkOT'
+ testPlanReport: {
+ id: '14'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'MTExZeyIyIjoiMzEifQWZhZG'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:55.237Z'
},
- atVersion: {
- id: '1',
- name: '2021.2111.13'
+ {
+ test: {
+ id: 'MzJkZeyIyIjoiMzEifQTAzMm'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:55.347Z'
},
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
+ {
+ test: {
+ id: 'NDBjMeyIyIjoiMzEifQjc1NT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:55.423Z'
},
- completedAt:
- '2023-08-18T03:17:09.134Z'
- },
- {
- test: {
- id: 'NWM4NeyIyIjoiMjYifQDEwM2'
+ {
+ test: {
+ id: 'MjE2MeyIyIjoiMzEifQ2M0NW'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:55.518Z'
},
- atVersion: {
- id: '1',
- name: '2021.2111.13'
+ {
+ test: {
+ id: 'MmZmNeyIyIjoiMzEifQ2IxOG'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:55.613Z'
},
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
+ {
+ test: {
+ id: 'MWZiZeyIyIjoiMzEifQjhhYz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:55.721Z'
},
- completedAt:
- '2023-08-18T03:17:09.202Z'
- },
- {
- test: {
- id: 'NGFiZeyIyIjoiMjYifQWZiYW'
+ {
+ test: {
+ id: 'NmI4NeyIyIjoiMzEifQDU2OD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:55.838Z'
},
- atVersion: {
- id: '1',
- name: '2021.2111.13'
+ {
+ test: {
+ id: 'YmExNeyIyIjoiMzEifQWE5Nj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:55.965Z'
},
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
+ {
+ test: {
+ id: 'YzA3NeyIyIjoiMzEifQGZhYT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:56.079Z'
},
- completedAt:
- '2023-08-18T03:17:09.268Z'
- },
- {
- test: {
- id: 'MzQzYeyIyIjoiMjYifQzU5Zm'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:09.336Z'
- }
- ]
- }
- ]
- },
- {
- id: '11',
- metrics: {
- testsCount: 11,
- supportLevel: 'FULL',
- conflictsCount: 0,
- supportPercent: 100,
- testsFailedCount: 9,
- testsPassedCount: 2,
- shouldFormatted: false,
- mustFormatted: '14 of 14 passed',
- shouldAssertionsCount: 0,
- mustAssertionsCount: 14,
- unexpectedBehaviorCount: 0,
- unexpectedBehaviorsFormatted: false,
- shouldAssertionsFailedCount: 0,
- shouldAssertionsPassedCount: 0,
- mustAssertionsFailedCount: 0,
- mustAssertionsPassedCount: 14
- },
- markedFinalAt: null,
- isFinal: false,
- at: {
- id: '3',
- name: 'VoiceOver for macOS'
- },
- browser: {
- id: '2',
- name: 'Chrome'
- },
- issues: [],
- draftTestPlanRuns: [
- {
- tester: {
- username: 'esmeralda-baggins'
- },
- testPlanReport: {
- id: '11'
- },
- testResults: [
- {
- test: {
- id: 'MzlmYeyIyIjoiMjYifQzIxY2'
+ {
+ test: {
+ id: 'YmYxOeyIyIjoiMzEifQDAxY2'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:56.177Z'
},
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
+ {
+ test: {
+ id: 'YzIwOeyIyIjoiMzEifQGE2Yz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:56.286Z'
},
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
+ {
+ test: {
+ id: 'YWMwNeyIyIjoiMzEifQDQ5MG'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:56.389Z'
},
- completedAt:
- '2023-08-18T03:17:11.532Z'
- },
- {
- test: {
- id: 'N2FkZeyIyIjoiMjYifQDQ5NT'
+ {
+ test: {
+ id: 'MjQyMeyIyIjoiMzEifQWExMm'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:56.509Z'
},
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
+ {
+ test: {
+ id: 'NDFiYeyIyIjoiMzEifQzg4MD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:56.639Z'
},
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
+ {
+ test: {
+ id: 'M2RmNeyIyIjoiMzEifQzQ0MG'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:56.783Z'
},
- completedAt:
- '2023-08-18T03:17:11.611Z'
- },
- {
- test: {
- id: 'ZDJkYeyIyIjoiMjYifQzRkYj'
- },
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:11.696Z'
- }
- ]
- }
- ]
+ {
+ test: {
+ id: 'ODhlYeyIyIjoiMzEifQmVmMT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '2',
+ name: '99.0.4844.84'
+ },
+ completedAt:
+ '2024-04-25T16:44:56.935Z'
+ }
+ ]
+ }
+ ]
+ }
},
{
- id: '4',
- metrics: {
- testsCount: 18,
- supportLevel: 'FAILING',
- conflictsCount: 0,
- supportPercent: 91,
- testsFailedCount: 14,
- testsPassedCount: 4,
- shouldFormatted: false,
- mustFormatted: '20 of 22 passed',
- shouldAssertionsCount: 0,
- mustAssertionsCount: 22,
- unexpectedBehaviorCount: 1,
- unexpectedBehaviorsFormatted: '1 found',
- shouldAssertionsFailedCount: 0,
- shouldAssertionsPassedCount: 0,
- mustAssertionsFailedCount: 2,
- mustAssertionsPassedCount: 20
- },
- markedFinalAt: '2022-07-06T00:00:00.000Z',
- isFinal: true,
+ isRequired: false,
at: {
id: '2',
name: 'NVDA'
},
browser: {
+ id: '1',
+ name: 'Firefox'
+ },
+ minimumAtVersion: {
id: '2',
- name: 'Chrome'
+ name: '2020.4'
},
- issues: [],
- draftTestPlanRuns: [
- {
- tester: {
- username: 'esmeralda-baggins'
- },
- testPlanReport: {
- id: '4'
- },
- testResults: [
- {
- test: {
- id: 'MThhNeyIyIjoiMjYifQmEyMj'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:09.409Z'
- },
- {
- test: {
- id: 'NWVkNeyIyIjoiMjYifQTZkOT'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:09.478Z'
- },
- {
- test: {
- id: 'NWM4NeyIyIjoiMjYifQDEwM2'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:09.551Z'
- },
- {
- test: {
- id: 'NGFiZeyIyIjoiMjYifQWZiYW'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:09.629Z'
- },
- {
- test: {
- id: 'MzQzYeyIyIjoiMjYifQzU5Zm'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:09.704Z'
- },
- {
- test: {
- id: 'MmI1MeyIyIjoiMjYifQmU3Yz'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:09.777Z'
- },
- {
- test: {
- id: 'YmRmYeyIyIjoiMjYifQjEyMT'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:09.852Z'
- }
- ]
- }
- ]
+ exactAtVersion: null,
+ testPlanReport: null
},
{
- id: '5',
- metrics: {
- testsCount: 11,
- supportLevel: 'FAILING',
- conflictsCount: 0,
- supportPercent: 92,
- testsFailedCount: 8,
- testsPassedCount: 3,
- shouldFormatted: false,
- mustFormatted: '23 of 25 passed',
- shouldAssertionsCount: 0,
- mustAssertionsCount: 25,
- unexpectedBehaviorCount: 1,
- unexpectedBehaviorsFormatted: '1 found',
- shouldAssertionsFailedCount: 0,
- shouldAssertionsPassedCount: 0,
- mustAssertionsFailedCount: 2,
- mustAssertionsPassedCount: 23
- },
- markedFinalAt: '2022-07-06T00:00:00.000Z',
- isFinal: true,
+ isRequired: true,
at: {
id: '3',
name: 'VoiceOver for macOS'
@@ -3789,391 +6963,214 @@ export default (
id: '3',
name: 'Safari'
},
- issues: [],
- draftTestPlanRuns: [
- {
- tester: {
- username: 'esmeralda-baggins'
- },
- testPlanReport: {
- id: '5'
- },
- testResults: [
- {
- test: {
- id: 'MzlmYeyIyIjoiMjYifQzIxY2'
- },
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
- },
- browserVersion: {
- id: '3',
- name: '14.1.2'
- },
- completedAt:
- '2023-08-18T03:17:09.923Z'
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '15',
+ metrics: {
+ testsCount: 8,
+ mayFormatted: false,
+ supportLevel: 'FULL',
+ commandsCount: 22,
+ mustFormatted: '76 of 76 passed',
+ conflictsCount: 0,
+ supportPercent: 100,
+ shouldFormatted: '22 of 22 passed',
+ testsFailedCount: 0,
+ testsPassedCount: 8,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 76,
+ assertionsFailedCount: 0,
+ assertionsPassedCount: 98,
+ shouldAssertionsCount: 22,
+ unexpectedBehaviorCount: 0,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 0,
+ mustAssertionsPassedCount: 76,
+ shouldAssertionsFailedCount: 0,
+ shouldAssertionsPassedCount: 22,
+ unexpectedBehaviorsFormatted: false,
+ severeImpactFailedAssertionCount: 0,
+ severeImpactPassedAssertionCount: 22,
+ moderateImpactFailedAssertionCount: 0,
+ moderateImpactPassedAssertionCount: 22
+ },
+ isFinal: true,
+ markedFinalAt: '2022-07-07T00:00:00.000Z',
+ issues: [],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'esmeralda-baggins'
},
- {
- test: {
- id: 'ZDJkYeyIyIjoiMjYifQzRkYj'
- },
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
- },
- browserVersion: {
- id: '3',
- name: '14.1.2'
- },
- completedAt:
- '2023-08-18T03:17:09.991Z'
+ testPlanReport: {
+ id: '15'
},
- {
- test: {
- id: 'ZmQyNeyIyIjoiMjYifQ2M2ND'
- },
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
- },
- browserVersion: {
- id: '3',
- name: '14.1.2'
+ testResults: [
+ {
+ test: {
+ id: 'NWUyZeyIyIjoiMzEifQDVkND'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:57.086Z'
},
- completedAt:
- '2023-08-18T03:17:10.059Z'
- },
- {
- test: {
- id: 'OGE3YeyIyIjoiMjYifQjU1ND'
+ {
+ test: {
+ id: 'N2I0YeyIyIjoiMzEifQjEwYj'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:57.206Z'
},
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
+ {
+ test: {
+ id: 'NmZjOeyIyIjoiMzEifQGY5ZT'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:57.334Z'
},
- browserVersion: {
- id: '3',
- name: '14.1.2'
+ {
+ test: {
+ id: 'YmU1MeyIyIjoiMzEifQzBiYj'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:57.464Z'
},
- completedAt:
- '2023-08-18T03:17:10.129Z'
- },
- {
- test: {
- id: 'YWI3OeyIyIjoiMjYifQWJlNW'
+ {
+ test: {
+ id: 'MGQyYeyIyIjoiMzEifQzcxZm'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:57.599Z'
},
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
+ {
+ test: {
+ id: 'ZmI0YeyIyIjoiMzEifQTU2Nz'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:57.734Z'
},
- browserVersion: {
- id: '3',
- name: '14.1.2'
+ {
+ test: {
+ id: 'YmRjZeyIyIjoiMzEifQGQyND'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:57.880Z'
},
- completedAt:
- '2023-08-18T03:17:10.198Z'
- },
- {
- test: {
- id: 'M2RiOeyIyIjoiMjYifQGY1Nj'
- },
- atVersion: {
- id: '3',
- name: '11.6 (20G165)'
- },
- browserVersion: {
- id: '3',
- name: '14.1.2'
- },
- completedAt:
- '2023-08-18T03:17:10.272Z'
- }
- ]
- }
- ]
+ {
+ test: {
+ id: 'YWFmMeyIyIjoiMzEifQzMwMT'
+ },
+ atVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ browserVersion: {
+ id: '3',
+ name: '14.1.2'
+ },
+ completedAt:
+ '2024-04-25T16:44:58.035Z'
+ }
+ ]
+ }
+ ]
+ }
},
{
- id: '8',
- metrics: {
- testsCount: 18,
- supportLevel: 'FULL',
- conflictsCount: 0,
- supportPercent: 100,
- testsFailedCount: 16,
- testsPassedCount: 2,
- shouldFormatted: false,
- mustFormatted: '16 of 16 passed',
- shouldAssertionsCount: 0,
- mustAssertionsCount: 16,
- unexpectedBehaviorCount: 0,
- unexpectedBehaviorsFormatted: false,
- shouldAssertionsFailedCount: 0,
- shouldAssertionsPassedCount: 0,
- mustAssertionsFailedCount: 0,
- mustAssertionsPassedCount: 16
- },
- markedFinalAt: null,
- isFinal: false,
+ isRequired: false,
at: {
- id: '1',
- name: 'JAWS'
+ id: '3',
+ name: 'VoiceOver for macOS'
},
browser: {
- id: '1',
- name: 'Firefox'
+ id: '2',
+ name: 'Chrome'
},
- issues: [],
- draftTestPlanRuns: [
- {
- tester: {
- username: 'esmeralda-baggins'
- },
- testPlanReport: {
- id: '8'
- },
- testResults: [
- {
- test: {
- id: 'MThhNeyIyIjoiMjYifQmEyMj'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:10.817Z'
- },
- {
- test: {
- id: 'ODY5MeyIyIjoiMjYifQzhmNW'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:10.894Z'
- },
- {
- test: {
- id: 'NWVkNeyIyIjoiMjYifQTZkOT'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt:
- '2023-08-18T03:17:10.979Z'
- }
- ]
- }
- ]
- }
- ],
- metadata: {}
- }
- }
- }
- },
- {
- request: {
- query: testPlanReportStatusDialogQuery,
- variables: { testPlanVersionId: '34' }
- },
- result: {
- data: {
- testPlanVersion: {
- id: '34',
- title: 'Toggle Button',
- phase: 'DRAFT',
- gitSha: '022340081280b8cafb8ae0716a5b67e9ab942ef4',
- gitMessage:
- 'Delete duplicated assertion for operating a not pressed togle button (VoiceOver) (#716)',
- updatedAt: '2022-05-18T20:51:40.000Z',
- draftPhaseReachedAt: '2022-07-06T00:00:00.000Z',
- candidatePhaseReachedAt: null,
- recommendedPhaseTargetDate: null,
- recommendedPhaseReachedAt: null,
- testPlan: {
- directory: 'toggle-button'
- },
- testPlanReports: [
- {
- id: '1',
- metrics: {
- testsCount: 16,
- supportLevel: 'FAILING',
- conflictsCount: 0,
- supportPercent: 93,
- testsFailedCount: 14,
- testsPassedCount: 2,
- shouldFormatted: false,
- mustFormatted: '28 of 30 passed',
- shouldAssertionsCount: 0,
- mustAssertionsCount: 30,
- unexpectedBehaviorCount: 1,
- unexpectedBehaviorsFormatted: '1 found',
- shouldAssertionsFailedCount: 0,
- shouldAssertionsPassedCount: 0,
- mustAssertionsFailedCount: 2,
- mustAssertionsPassedCount: 28
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
},
- markedFinalAt: null,
- isFinal: false,
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: false,
at: {
- id: '1',
- name: 'JAWS'
+ id: '3',
+ name: 'VoiceOver for macOS'
},
browser: {
- id: '2',
- name: 'Chrome'
+ id: '1',
+ name: 'Firefox'
},
- issues: [],
- draftTestPlanRuns: [
- {
- tester: {
- username: 'esmeralda-baggins'
- },
- testPlanReport: {
- id: '1'
- },
- testResults: [
- {
- test: {
- id: 'OWY5NeyIyIjoiMzQifQTRmOD'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:07.154Z'
- },
- {
- test: {
- id: 'NGFjMeyIyIjoiMzQifQjQxY2'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt: null
- },
- {
- test: {
- id: 'NTAwOeyIyIjoiMzQifQWI5YT'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt: null
- },
- {
- test: {
- id: 'YThjMeyIyIjoiMzQifQzIyYT'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt: null
- },
- {
- test: {
- id: 'YTgxMeyIyIjoiMzQifQzExOW'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:07.381Z'
- },
- {
- test: {
- id: 'NGMwNeyIyIjoiMzQifQ2IwN2'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:07.464Z'
- },
- {
- test: {
- id: 'YzQxNeyIyIjoiMzQifQjY5ND'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:07.537Z'
- },
- {
- test: {
- id: 'MjgwNeyIyIjoiMzQifQzk3YT'
- },
- atVersion: {
- id: '1',
- name: '2021.2111.13'
- },
- browserVersion: {
- id: '2',
- name: '99.0.4844.84'
- },
- completedAt:
- '2023-08-18T03:17:07.610Z'
- }
- ]
- }
- ]
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
}
- ],
- metadata: {}
+ ]
}
}
}
diff --git a/client/tests/__mocks__/GraphQLMocks/TestPlanReportStatusDialogMock.js b/client/tests/__mocks__/GraphQLMocks/TestPlanReportStatusDialogMock.js
index 3dee6df1b..84faac768 100644
--- a/client/tests/__mocks__/GraphQLMocks/TestPlanReportStatusDialogMock.js
+++ b/client/tests/__mocks__/GraphQLMocks/TestPlanReportStatusDialogMock.js
@@ -12,28 +12,60 @@ export const mockedTestPlanVersion = {
testPlan: {
directory: 'combobox-select-only'
},
- testPlanReports: [
+ testPlanReportStatuses: [
{
- id: '2',
- metrics: {
- testsCount: 21,
- supportLevel: 'FAILING',
- conflictsCount: 5,
- supportPercent: 96,
- testsFailedCount: 16,
- testsPassedCount: 5,
- shouldFormatted: '3 of 3 passed',
- mustFormatted: '48 of 50 passed',
- shouldAssertionsCount: 3,
- mustAssertionsCount: 50,
- unexpectedBehaviorCount: 3,
- unexpectedBehaviorsFormatted: '3 found',
- shouldAssertionsFailedCount: 0,
- shouldAssertionsPassedCount: 3,
- mustAssertionsFailedCount: 2,
- mustAssertionsPassedCount: 48
+ isRequired: true,
+ at: {
+ id: '1',
+ name: 'JAWS'
+ },
+ browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
+ id: '1',
+ name: '2021.2111.13'
},
- markedFinalAt: null,
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '1',
+ name: 'JAWS'
+ },
+ browser: {
+ id: '1',
+ name: 'Firefox'
+ },
+ minimumAtVersion: {
+ id: '1',
+ name: '2021.2111.13'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: true,
+ at: {
+ id: '2',
+ name: 'NVDA'
+ },
+ browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: false,
at: {
id: '2',
name: 'NVDA'
@@ -42,239 +74,657 @@ export const mockedTestPlanVersion = {
id: '1',
name: 'Firefox'
},
- issues: [],
- draftTestPlanRuns: [
- {
- tester: {
- username: 'tom-proudfeet'
- },
- testPlanReport: {
- id: '2'
- },
- testResults: [
- {
- test: {
- id: 'Nzg5NeyIyIjoiNyJ9zNjZj'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt: '2023-08-18T03:17:08.240Z'
- },
- {
- test: {
- id: 'MmY0YeyIyIjoiNyJ9jRkZD'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt: '2023-08-18T03:17:08.332Z'
+ minimumAtVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ exactAtVersion: null,
+ testPlanReport: {
+ id: '2',
+ metrics: {
+ testsCount: 21,
+ mayFormatted: false,
+ supportLevel: 'FAILING',
+ commandsCount: 24,
+ mustFormatted: '118 of 122 passed',
+ conflictsCount: 3,
+ supportPercent: 97,
+ shouldFormatted: '34 of 36 passed',
+ testsFailedCount: 6,
+ testsPassedCount: 15,
+ mayAssertionsCount: 0,
+ mustAssertionsCount: 122,
+ assertionsFailedCount: 6,
+ assertionsPassedCount: 152,
+ shouldAssertionsCount: 36,
+ unexpectedBehaviorCount: 3,
+ mayAssertionsFailedCount: 0,
+ mayAssertionsPassedCount: 0,
+ mustAssertionsFailedCount: 4,
+ mustAssertionsPassedCount: 118,
+ shouldAssertionsFailedCount: 2,
+ shouldAssertionsPassedCount: 34,
+ unexpectedBehaviorsFormatted: '3 found',
+ severeImpactFailedAssertionCount: 1,
+ severeImpactPassedAssertionCount: 23,
+ moderateImpactFailedAssertionCount: 2,
+ moderateImpactPassedAssertionCount: 22
+ },
+ isFinal: false,
+ markedFinalAt: null,
+ issues: [
+ {
+ link: 'https://github.com/bocoup/aria-at/issues/128#issue-2157878584',
+ isOpen: true,
+ feedbackType: 'FEEDBACK'
+ }
+ ],
+ draftTestPlanRuns: [
+ {
+ tester: {
+ username: 'tom-proudfeet'
},
- {
- test: {
- id: 'ZjUwNeyIyIjoiNyJ9mE2ZT'
- },
- atVersion: {
- id: '2',
- name: '2020.4'
- },
- browserVersion: {
- id: '1',
- name: '99.0.1'
- },
- completedAt: '2023-08-18T03:17:08.412Z'
+ testPlanReport: {
+ id: '2'
},
- {
- test: {
- id: 'MDNiMeyIyIjoiNyJ9Dk1MT'
+ testResults: [
+ {
+ test: {
+ id: 'Nzg5NeyIyIjoiNyJ9zNjZj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:38.949Z'
},
- atVersion: {
- id: '2',
- name: '2020.4'
+ {
+ test: {
+ id: 'MmY0YeyIyIjoiNyJ9jRkZD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:39.070Z'
},
- browserVersion: {
- id: '1',
- name: '99.0.1'
+ {
+ test: {
+ id: 'ZjUwNeyIyIjoiNyJ9mE2ZT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:39.180Z'
},
- completedAt: '2023-08-18T03:17:08.501Z'
- },
- {
- test: {
- id: 'MjRmNeyIyIjoiNyJ92MyMT'
+ {
+ test: {
+ id: 'MDNiMeyIyIjoiNyJ9Dk1MT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:39.292Z'
},
- atVersion: {
- id: '2',
- name: '2020.4'
+ {
+ test: {
+ id: 'MjRmNeyIyIjoiNyJ92MyMT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:39.406Z'
},
- browserVersion: {
- id: '1',
- name: '99.0.1'
+ {
+ test: {
+ id: 'ZmVlMeyIyIjoiNyJ9mUyYj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: null
},
- completedAt: '2023-08-18T03:17:08.593Z'
- },
- {
- test: {
- id: 'ZmVlMeyIyIjoiNyJ9mUyYj'
+ {
+ test: {
+ id: 'YWFiNeyIyIjoiNyJ9zE2Zj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:39.640Z'
},
- atVersion: {
- id: '2',
- name: '2020.4'
+ {
+ test: {
+ id: 'YjZkYeyIyIjoiNyJ9WIxZm'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:39.761Z'
},
- browserVersion: {
- id: '1',
- name: '99.0.1'
+ {
+ test: {
+ id: 'ZmIzMeyIyIjoiNyJ9TQ1NW'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:39.888Z'
},
- completedAt: null
- },
- {
- test: {
- id: 'YWFiNeyIyIjoiNyJ9zE2Zj'
+ {
+ test: {
+ id: 'MmZkNeyIyIjoiNyJ9zIwN2'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:40.006Z'
},
- atVersion: {
- id: '2',
- name: '2020.4'
+ {
+ test: {
+ id: 'ZmQwOeyIyIjoiNyJ9DEzYz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:40.122Z'
},
- browserVersion: {
- id: '1',
- name: '99.0.1'
+ {
+ test: {
+ id: 'MGViNeyIyIjoiNyJ9GQ3MT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:40.234Z'
},
- completedAt: '2023-08-18T03:17:08.811Z'
- },
- {
- test: {
- id: 'YjZkYeyIyIjoiNyJ9WIxZm'
+ {
+ test: {
+ id: 'YTg5MeyIyIjoiNyJ9WEzOT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:40.355Z'
},
- atVersion: {
- id: '2',
- name: '2020.4'
+ {
+ test: {
+ id: 'NTRjMeyIyIjoiNyJ9zQ0OD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:40.467Z'
},
- browserVersion: {
- id: '1',
- name: '99.0.1'
+ {
+ test: {
+ id: 'MjRlZeyIyIjoiNyJ9DcyY2'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:40.588Z'
},
- completedAt: '2023-08-18T03:17:08.902Z'
- },
- {
- test: {
- id: 'ZmIzMeyIyIjoiNyJ9TQ1NW'
+ {
+ test: {
+ id: 'YWQzNeyIyIjoiNyJ9mE2Nm'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:40.712Z'
},
- atVersion: {
- id: '2',
- name: '2020.4'
+ {
+ test: {
+ id: 'OTYxOeyIyIjoiNyJ9TdmYj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:40.826Z'
},
- browserVersion: {
- id: '1',
- name: '99.0.1'
+ {
+ test: {
+ id: 'MjgzNeyIyIjoiNyJ9TZjNz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:40.948Z'
},
- completedAt: '2023-08-18T03:17:08.996Z'
- }
- ]
- },
- {
- tester: {
- username: 'esmeralda-baggins'
- },
- testPlanReport: {
- id: '2'
+ {
+ test: {
+ id: 'NWNiZeyIyIjoiNyJ9jI2MD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:41.075Z'
+ }
+ ]
},
- testResults: [
- {
- test: {
- id: 'Nzg5NeyIyIjoiNyJ9zNjZj'
+ {
+ tester: {
+ username: 'esmeralda-baggins'
+ },
+ testPlanReport: {
+ id: '2'
+ },
+ testResults: [
+ {
+ test: {
+ id: 'Nzg5NeyIyIjoiNyJ9zNjZj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:36.666Z'
},
- atVersion: {
- id: '2',
- name: '2020.4'
+ {
+ test: {
+ id: 'MmY0YeyIyIjoiNyJ9jRkZD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:36.793Z'
},
- browserVersion: {
- id: '1',
- name: '99.0.1'
+ {
+ test: {
+ id: 'ZjUwNeyIyIjoiNyJ9mE2ZT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:36.914Z'
},
- completedAt: '2023-08-18T03:17:07.718Z'
- },
- {
- test: {
- id: 'MmY0YeyIyIjoiNyJ9jRkZD'
+ {
+ test: {
+ id: 'MDNiMeyIyIjoiNyJ9Dk1MT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:37.031Z'
},
- atVersion: {
- id: '2',
- name: '2020.4'
+ {
+ test: {
+ id: 'MjRmNeyIyIjoiNyJ92MyMT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:37.150Z'
},
- browserVersion: {
- id: '1',
- name: '99.0.1'
+ {
+ test: {
+ id: 'ZmVlMeyIyIjoiNyJ9mUyYj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: null
},
- completedAt: '2023-08-18T03:17:07.813Z'
- },
- {
- test: {
- id: 'ZjUwNeyIyIjoiNyJ9mE2ZT'
+ {
+ test: {
+ id: 'YWFiNeyIyIjoiNyJ9zE2Zj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:37.384Z'
},
- atVersion: {
- id: '2',
- name: '2020.4'
+ {
+ test: {
+ id: 'YjZkYeyIyIjoiNyJ9WIxZm'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:37.512Z'
},
- browserVersion: {
- id: '1',
- name: '99.0.1'
+ {
+ test: {
+ id: 'ZmIzMeyIyIjoiNyJ9TQ1NW'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:37.638Z'
},
- completedAt: '2023-08-18T03:17:07.914Z'
- },
- {
- test: {
- id: 'MDNiMeyIyIjoiNyJ9Dk1MT'
+ {
+ test: {
+ id: 'MmZkNeyIyIjoiNyJ9zIwN2'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:37.760Z'
},
- atVersion: {
- id: '2',
- name: '2020.4'
+ {
+ test: {
+ id: 'ZmQwOeyIyIjoiNyJ9DEzYz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:37.883Z'
},
- browserVersion: {
- id: '1',
- name: '99.0.1'
+ {
+ test: {
+ id: 'MGViNeyIyIjoiNyJ9GQ3MT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:38.014Z'
},
- completedAt: '2023-08-18T03:17:07.988Z'
- },
- {
- test: {
- id: 'MjRmNeyIyIjoiNyJ92MyMT'
+ {
+ test: {
+ id: 'YTg5MeyIyIjoiNyJ9WEzOT'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:38.145Z'
},
- atVersion: {
- id: '2',
- name: '2020.4'
+ {
+ test: {
+ id: 'NTRjMeyIyIjoiNyJ9zQ0OD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:38.268Z'
},
- browserVersion: {
- id: '1',
- name: '99.0.1'
+ {
+ test: {
+ id: 'MjRlZeyIyIjoiNyJ9DcyY2'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:38.382Z'
},
- completedAt: '2023-08-18T03:17:08.074Z'
- },
- {
- test: {
- id: 'ZmVlMeyIyIjoiNyJ9mUyYj'
+ {
+ test: {
+ id: 'YWQzNeyIyIjoiNyJ9mE2Nm'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:38.481Z'
},
- atVersion: {
- id: '2',
- name: '2020.4'
+ {
+ test: {
+ id: 'OTYxOeyIyIjoiNyJ9TdmYj'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:38.596Z'
},
- browserVersion: {
- id: '1',
- name: '99.0.1'
+ {
+ test: {
+ id: 'MjgzNeyIyIjoiNyJ9TZjNz'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:38.701Z'
},
- completedAt: null
- }
- ]
- }
- ]
+ {
+ test: {
+ id: 'NWNiZeyIyIjoiNyJ9jI2MD'
+ },
+ atVersion: {
+ id: '2',
+ name: '2020.4'
+ },
+ browserVersion: {
+ id: '1',
+ name: '99.0.1'
+ },
+ completedAt: '2024-04-25T16:44:38.811Z'
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ isRequired: true,
+ at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
+ },
+ browser: {
+ id: '3',
+ name: 'Safari'
+ },
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
+ },
+ browser: {
+ id: '2',
+ name: 'Chrome'
+ },
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
+ },
+ {
+ isRequired: false,
+ at: {
+ id: '3',
+ name: 'VoiceOver for macOS'
+ },
+ browser: {
+ id: '1',
+ name: 'Firefox'
+ },
+ minimumAtVersion: {
+ id: '3',
+ name: '11.6 (20G165)'
+ },
+ exactAtVersion: null,
+ testPlanReport: null
}
]
};
@@ -305,82 +755,7 @@ export default (
},
result: {
data: {
- testPlanVersion: mockedTestPlanVersion,
- ats: [
- {
- id: '1',
- name: 'JAWS',
- atVersions: [
- {
- id: '1',
- name: '2021.2111.13',
- releasedAt: '2021-11-01T04:00:00.000Z'
- }
- ],
- browsers: [
- {
- id: '2',
- name: 'Chrome'
- },
- {
- id: '1',
- name: 'Firefox'
- }
- ],
- candidateBrowsers: [{ id: '2' }],
- recommendedBrowsers: [{ id: '1' }, { id: '2' }]
- },
- {
- id: '2',
- name: 'NVDA',
- atVersions: [
- {
- id: '2',
- name: '2020.4',
- releasedAt: '2021-02-19T05:00:00.000Z'
- }
- ],
- browsers: [
- {
- id: '2',
- name: 'Chrome'
- },
- {
- id: '1',
- name: 'Firefox'
- }
- ],
- candidateBrowsers: [{ id: '2' }],
- recommendedBrowsers: [{ id: '1' }, { id: '2' }]
- },
- {
- id: '3',
- name: 'VoiceOver for macOS',
- atVersions: [
- {
- id: '3',
- name: '11.6 (20G165)',
- releasedAt: '2019-09-01T04:00:00.000Z'
- }
- ],
- browsers: [
- {
- id: '2',
- name: 'Chrome'
- },
- {
- id: '1',
- name: 'Firefox'
- },
- {
- id: '3',
- name: 'Safari'
- }
- ],
- candidateBrowsers: [{ id: '3' }],
- recommendedBrowsers: [{ id: '2' }, { id: '3' }]
- }
- ]
+ testPlanVersion: mockedTestPlanVersion
}
}
},
diff --git a/server/graphql-schema.js b/server/graphql-schema.js
index 27004b5eb..9e3309e26 100644
--- a/server/graphql-schema.js
+++ b/server/graphql-schema.js
@@ -334,11 +334,11 @@ const graphqlSchema = gql`
version was imported from the ARIA-AT repo. Used to version the test
plan over time.
"""
- gitSha: String! # TODO: remove if using version labels
+ gitSha: String!
"""
Git commit message corresponding to the git sha's commit.
"""
- gitMessage: String! # TODO: remove if using version labels
+ gitMessage: String!
"""
The date (originating in Git) corresponding to the Git sha's commit.
This can also be considered as the time for when R & D was complete
@@ -367,8 +367,7 @@ const graphqlSchema = gql`
"""
tests: [Test]!
"""
- The TestPlanReports attached to the TestPlanVersion. There will always
- be a unique combination of AT + Browser + TestPlanVersion.
+ The TestPlanReports attached to the TestPlanVersion.
isFinal is used to check if a TestPlanReport has been "Marked as Final",
indicated by TestPlanReport.markedFinalAt existence.
@@ -378,6 +377,10 @@ const graphqlSchema = gql`
"""
testPlanReports(isFinal: Boolean): [TestPlanReport]!
"""
+ A list of existing or missing TestPlanReports that may be collected.
+ """
+ testPlanReportStatuses: [TestPlanReportStatus]!
+ """
For each report under this TestPlanVersion, if the report's combination
is indicated as required and the report is marked as final at the time
the TestPlanVersion is updated to RECOMMENDED then by checking the
@@ -402,6 +405,50 @@ const graphqlSchema = gql`
earliestAtVersion(atId: ID!): AtVersion
}
+ """
+ An existing or missing TestPlanReport that can be collected for a given
+ TestPlanVersion.
+ """
+ type TestPlanReportStatus {
+ """
+ Whether the TestPlanReport is actually required during the given
+ TestPlanVersion phase.
+ """
+ isRequired: Boolean!
+ """
+ The report's AT, which will be populated even if the TestPlanReport is
+ missing.
+ """
+ at: At!
+ """
+ The version of the AT that should be used for the report will be
+ specified either as an exactAtVersion or minimumAtVersion and will be
+ populated even if the TestPlanReport is missing.
+
+ During the TestPlanVersion's draft and candidate phases, the looser
+ requirement of minimumAtVersion will be used to reduce the amount of
+ data collected before consensus is achieved.
+
+ During the recommended phase all reports will be associated with an
+ exactAtVersion, enabling large-scale data collection for all versions
+ of the AT as they are released.
+ """
+ exactAtVersion: AtVersion
+ """
+ See exactAtVersion for more information.
+ """
+ minimumAtVersion: AtVersion
+ """
+ The report's browser, which will be populated even if the
+ TestPlanReport is missing.
+ """
+ browser: Browser!
+ """
+ The TestPlanReport, which may not currently exist.
+ """
+ testPlanReport: TestPlanReport
+ }
+
"""
A parsed version of an ARIA-AT test, which, although it may produce multiple
executable artifacts (i.e. the scenarios), originated from a single row in
@@ -961,6 +1008,14 @@ const graphqlSchema = gql`
"""
at: At!
"""
+ Either a minimumAtVersion or exactAtVersion will be available. The minimumAtVersion, when defined, is the oldest version of the AT that testers are allowed to use when collecting results.
+ """
+ minimumAtVersion: AtVersion
+ """
+ Either a minimumAtVersion or exactAtVersion will be available. The exactAtVersion, when defined, is the only version of the AT that testers are allowed to use when collecting results. Note that when a TestPlanVersion reaches the recommended stage, all its reports will automatically switch from having a minimumAtVersion to an exactAtVersion. See the earliestAtVersion field of TestPlanVersion for more information.
+ """
+ exactAtVersion: AtVersion
+ """
The unique AT Versions used when collecting results for this report.
"""
atVersions: [AtVersion]!
diff --git a/server/models/services/TestResultReadService.js b/server/models/services/TestResultReadService.js
index 96fefb1b0..a834136f9 100644
--- a/server/models/services/TestResultReadService.js
+++ b/server/models/services/TestResultReadService.js
@@ -18,7 +18,7 @@ const getTestResults = async ({ testPlanRun, context }) => {
const { atLoader, browserLoader, transaction } = context;
const { testPlanReport } = testPlanRun;
- const tests = getTests(testPlanReport);
+ const tests = getTests(testPlanRun);
const ats = await atLoader.getAll({ transaction });
const browsers = await browserLoader.getAll({ transaction });
diff --git a/server/models/services/TestsService.js b/server/models/services/TestsService.js
index 03fa55187..58e839357 100644
--- a/server/models/services/TestsService.js
+++ b/server/models/services/TestsService.js
@@ -5,12 +5,20 @@ const {
} = require('../../resolvers/helpers/retrieveCommands');
const getTests = parentRecord => {
- const isTestPlanVersion = !!parentRecord.tests;
- const testPlanReport = isTestPlanVersion ? null : parentRecord;
- const testPlanVersion = isTestPlanVersion
- ? parentRecord
- : testPlanReport.testPlanVersion;
+ let testPlanVersion;
+ let testPlanReport;
+ if (parentRecord.tests) {
+ testPlanVersion = parentRecord;
+ } else if (parentRecord.testPlanRuns) {
+ testPlanReport = parentRecord;
+ testPlanVersion = parentRecord.testPlanVersion;
+ } else if (parentRecord.testResults) {
+ testPlanReport = parentRecord.testPlanReport;
+ testPlanVersion = parentRecord.testPlanReport.testPlanVersion;
+ }
+
const inferredAtId = testPlanReport?.atId;
+
const isV2 = testPlanVersion.metadata?.testFormatVersion === 2;
// Populate nested At and Command fields
diff --git a/server/resolvers/TestPlanReport/browserResolver.js b/server/resolvers/TestPlanReport/browserResolver.js
index b5c28a009..ce0192288 100644
--- a/server/resolvers/TestPlanReport/browserResolver.js
+++ b/server/resolvers/TestPlanReport/browserResolver.js
@@ -3,7 +3,7 @@ const browserResolver = async (testPlanReport, _, context) => {
const browsers = await browserLoader.getAll({ transaction });
- return browsers.find(browser => browser.id === testPlanReport.browser.id);
+ return browsers.find(browser => browser.id === testPlanReport.browserId);
};
module.exports = browserResolver;
diff --git a/server/resolvers/TestPlanReport/exactAtVersionResolver.js b/server/resolvers/TestPlanReport/exactAtVersionResolver.js
new file mode 100644
index 000000000..a3e156abf
--- /dev/null
+++ b/server/resolvers/TestPlanReport/exactAtVersionResolver.js
@@ -0,0 +1,17 @@
+const exactAtVersionResolver = async (testPlanReport, _, context) => {
+ if (!testPlanReport.exactAtVersionId) return null;
+
+ const { transaction, atLoader } = context;
+
+ const ats = await atLoader.getAll({ transaction });
+
+ const at = ats.find(at => at.id === testPlanReport.atId);
+
+ const atVersion = at.atVersions.find(
+ atVersion => atVersion.id === testPlanReport.exactAtVersionId
+ );
+
+ return atVersion;
+};
+
+module.exports = exactAtVersionResolver;
diff --git a/server/resolvers/TestPlanReport/index.js b/server/resolvers/TestPlanReport/index.js
index 7f714a3bf..07f392249 100644
--- a/server/resolvers/TestPlanReport/index.js
+++ b/server/resolvers/TestPlanReport/index.js
@@ -10,6 +10,8 @@ const at = require('./atResolver');
const browser = require('./browserResolver');
const latestAtVersionReleasedAt = require('./latestAtVersionReleasedAtResolver');
const isFinal = require('./isFinalResolver');
+const exactAtVersion = require('./exactAtVersionResolver');
+const minimumAtVersion = require('./minimumAtVersionResolver');
module.exports = {
runnableTests,
@@ -21,6 +23,8 @@ module.exports = {
issues,
atVersions,
at,
+ exactAtVersion,
+ minimumAtVersion,
browser,
latestAtVersionReleasedAt,
isFinal
diff --git a/server/resolvers/TestPlanReport/minimumAtVersionResolver.js b/server/resolvers/TestPlanReport/minimumAtVersionResolver.js
new file mode 100644
index 000000000..c8fe6a317
--- /dev/null
+++ b/server/resolvers/TestPlanReport/minimumAtVersionResolver.js
@@ -0,0 +1,17 @@
+const minimumAtVersionResolver = async (testPlanReport, _, context) => {
+ if (!testPlanReport.minimumAtVersionId) return null;
+
+ const { transaction, atLoader } = context;
+
+ const ats = await atLoader.getAll({ transaction });
+
+ const at = ats.find(at => at.id === testPlanReport.atId);
+
+ const atVersion = at.atVersions.find(
+ atVersion => atVersion.id === testPlanReport.minimumAtVersionId
+ );
+
+ return atVersion;
+};
+
+module.exports = minimumAtVersionResolver;
diff --git a/server/resolvers/TestPlanVersion/index.js b/server/resolvers/TestPlanVersion/index.js
index 6a94ec000..6aa63ff2f 100644
--- a/server/resolvers/TestPlanVersion/index.js
+++ b/server/resolvers/TestPlanVersion/index.js
@@ -3,6 +3,7 @@ const gitMessage = require('./gitMessageResolver');
const tests = require('./testsResolver');
const testPlanReports = require('./testPlanReportsResolver');
const recommendedPhaseTargetDate = require('./recommendedPhaseTargetDateResolver');
+const testPlanReportStatuses = require('./testPlanReportStatusesResolver');
const earliestAtVersion = require('./earliestAtVersionResolver');
const TestPlanVersion = {
@@ -11,6 +12,7 @@ const TestPlanVersion = {
tests,
testPlanReports,
recommendedPhaseTargetDate,
+ testPlanReportStatuses,
earliestAtVersion
};
diff --git a/server/resolvers/TestPlanVersion/testPlanReportStatusesResolver.js b/server/resolvers/TestPlanVersion/testPlanReportStatusesResolver.js
new file mode 100644
index 000000000..5fd8db1c0
--- /dev/null
+++ b/server/resolvers/TestPlanVersion/testPlanReportStatusesResolver.js
@@ -0,0 +1,179 @@
+const atResolver = require('../TestPlanReport/atResolver');
+const browserResolver = require('../TestPlanReport/browserResolver');
+const exactAtVersionResolver = require('../TestPlanReport/exactAtVersionResolver');
+const minimumAtVersionResolver = require('../TestPlanReport/minimumAtVersionResolver');
+
+const testPlanReportStatusesResolver = async (testPlanVersion, _, context) => {
+ const { transaction, atLoader } = context;
+
+ const ats = await atLoader.getAll({ transaction });
+
+ const { testPlanReports, phase } = testPlanVersion;
+
+ const indexedTestPlanReports = await indexTestPlanReports(
+ testPlanReports ?? [],
+ context
+ );
+
+ const populateTestPlanVersion = testPlanReport => {
+ return { ...testPlanReport, testPlanVersion };
+ };
+
+ const unsortedStatuses = [];
+
+ ats.forEach(at => {
+ at.browsers.forEach(browser => {
+ let isRequiredAtBrowser = false;
+ if (phase === 'DRAFT' || phase === 'CANDIDATE') {
+ isRequiredAtBrowser = at.candidateBrowsers.some(
+ candidateBrowser => candidateBrowser.id === browser.id
+ );
+ } else if (phase === 'RECOMMENDED') {
+ isRequiredAtBrowser = at.recommendedBrowsers.some(
+ recommendedBrowser => recommendedBrowser.id === browser.id
+ );
+ }
+
+ const hasNoReports =
+ Object.keys(indexedTestPlanReports?.[at.id]?.[browser.id] ?? {})
+ .length === 0;
+
+ if (hasNoReports) {
+ const earliestAtVersion = at.atVersions[0];
+
+ unsortedStatuses.push({
+ isRequired: isRequiredAtBrowser,
+ at,
+ browser,
+ minimumAtVersion: earliestAtVersion,
+ exactAtVersion: null,
+ testPlanReport: null
+ });
+
+ return;
+ }
+
+ let isFirstAtBrowserInstance = true;
+ let firstTestPlanReportFound = false;
+ let minimumAtVersionFound = false;
+
+ const atVersions = at.atVersions.sort((a, b) => {
+ return new Date(a.releasedAt) - new Date(b.releasedAt);
+ });
+
+ atVersions.forEach(atVersion => {
+ const testPlanReports =
+ indexedTestPlanReports?.[at.id]?.[browser.id]?.[
+ atVersion.id
+ ] ?? [];
+
+ if (testPlanReports.length) {
+ firstTestPlanReportFound = true;
+ testPlanReports.forEach(testPlanReport => {
+ let isRequired = false;
+ if (isRequiredAtBrowser && isFirstAtBrowserInstance) {
+ isFirstAtBrowserInstance = false;
+ isRequired = true;
+ }
+ if (testPlanReport.minimumAtVersion) {
+ minimumAtVersionFound = true;
+ }
+ unsortedStatuses.push({
+ isRequired,
+ at,
+ browser,
+ minimumAtVersion: testPlanReport.minimumAtVersion,
+ exactAtVersion: testPlanReport.exactAtVersion,
+ testPlanReport:
+ populateTestPlanVersion(testPlanReport)
+ });
+ });
+
+ return;
+ }
+
+ if (firstTestPlanReportFound && !minimumAtVersionFound) {
+ unsortedStatuses.push({
+ isRequired: false,
+ at,
+ browser,
+ minimumAtVersion: null,
+ exactAtVersion: atVersion,
+ testPlanReport: null
+ });
+ }
+ });
+ });
+ });
+
+ const statuses = unsortedStatuses.sort((a, b) => {
+ if (a.at.name !== b.at.name) return a.at.name.localeCompare(b.at.name);
+ if (a.isRequired !== b.isRequired) return a.isRequired ? -1 : 1;
+ if (a.browser.name !== b.browser.name) {
+ return a.browser.name.localeCompare(b.browser.name);
+ }
+ const dateA = (a.minimumAtVersion ?? a.exactAtVersion).releasedAt;
+ const dateB = (b.minimumAtVersion ?? b.exactAtVersion).releasedAt;
+ return new Date(dateA) - new Date(dateB);
+ });
+
+ return statuses;
+};
+
+const indexTestPlanReports = async (unpopulatedTestPlanReports, context) => {
+ const unsortedTestPlanReports = await Promise.all(
+ unpopulatedTestPlanReports.map(async report => {
+ const [at, browser, minimumAtVersion, exactAtVersion] =
+ await Promise.all([
+ atResolver(report, null, context),
+ browserResolver(report, null, context),
+ minimumAtVersionResolver(report, null, context),
+ exactAtVersionResolver(report, null, context)
+ ]);
+
+ return {
+ ...report.dataValues,
+ at,
+ browser,
+ minimumAtVersion,
+ exactAtVersion
+ };
+ })
+ );
+
+ const releaseOrderTestPlanReports = unsortedTestPlanReports.sort((a, b) => {
+ const dateA = (a.minimumAtVersion ?? a.exactAtVersion).releasedAt;
+ const dateB = (b.minimumAtVersion ?? b.exactAtVersion).releasedAt;
+ if (dateA !== dateB) return new Date(dateB) - new Date(dateA);
+
+ // With duplicate reports list the oldest first
+ return new Date(a.createdAt) - new Date(b.createdAt);
+ });
+
+ const indexedTestPlanReports = {};
+
+ releaseOrderTestPlanReports.forEach(testPlanReport => {
+ const { at, browser, minimumAtVersion, exactAtVersion } =
+ testPlanReport;
+
+ if (!indexedTestPlanReports[at.id]) indexedTestPlanReports[at.id] = {};
+ if (!indexedTestPlanReports[at.id][browser.id]) {
+ indexedTestPlanReports[at.id][browser.id] = {};
+ }
+
+ const atVersion = minimumAtVersion ?? exactAtVersion;
+
+ if (!indexedTestPlanReports[at.id][browser.id][atVersion.id]) {
+ // Must be an array to accommodate duplicates, which are allowed
+ indexedTestPlanReports[at.id][browser.id][atVersion.id] = [];
+ }
+
+ indexedTestPlanReports[at.id][browser.id][atVersion.id].push(
+ testPlanReport
+ );
+ });
+
+ return indexedTestPlanReports;
+};
+
+module.exports = testPlanReportStatusesResolver;
diff --git a/server/resolvers/TestPlanVersion/testPlanReportStatusesResolver.test.js b/server/resolvers/TestPlanVersion/testPlanReportStatusesResolver.test.js
new file mode 100644
index 000000000..b0b112b62
--- /dev/null
+++ b/server/resolvers/TestPlanVersion/testPlanReportStatusesResolver.test.js
@@ -0,0 +1,205 @@
+const { uniq: unique } = require('lodash');
+const getGraphQLContext = require('../../graphql-context');
+const testPlanReportStatusesResolver = require('./testPlanReportStatusesResolver');
+const db = require('../../models');
+const dbCleaner = require('../../tests/util/db-cleaner');
+const { createAtVersion } = require('../../models/services/AtService');
+
+describe('testPlanReportStatusesResolver', () => {
+ const getFakeTestPlanReport = values => {
+ const fake = { ...values };
+ fake.dataValues = values;
+ return values;
+ };
+
+ let context;
+
+ beforeEach(() => {
+ context = getGraphQLContext({ req: { transaction: false } });
+ });
+
+ afterAll(async () => {
+ // Closing the DB connection allows Jest to exit successfully.
+ await db.sequelize.close();
+ });
+
+ it('uses minimumAtVersions when no testPlanReports exist', async () => {
+ const testPlanVersionWithoutReports = {
+ phase: 'DRAFT',
+ testPlanReports: []
+ };
+
+ const statuses = await testPlanReportStatusesResolver(
+ testPlanVersionWithoutReports,
+ null,
+ context
+ );
+
+ const atsInOrder = unique(statuses.map(status => status.at.name));
+ const jawsBrowsersInOrder = unique(
+ statuses
+ .filter(status => status.at.id === 1)
+ .map(status => status.browser.name)
+ );
+ const voiceoverBrowsersInOrder = unique(
+ statuses
+ .filter(status => status.at.id === 3)
+ .map(status => status.browser.name)
+ );
+ const exactAtVersions = statuses.filter(
+ status => status.exactAtVersion
+ );
+ const requiredStatuses = statuses.filter(status => status.isRequired);
+
+ expect(statuses.length).toBe(7);
+ expect(atsInOrder).toEqual(['JAWS', 'NVDA', 'VoiceOver for macOS']);
+ expect(jawsBrowsersInOrder).toEqual(['Chrome', 'Firefox']);
+ expect(voiceoverBrowsersInOrder).toEqual([
+ 'Safari',
+ 'Chrome',
+ 'Firefox'
+ ]);
+ expect(exactAtVersions).toEqual([]);
+ expect(requiredStatuses.length).toBe(3);
+ });
+
+ it('matches up testPlanReports when they exist', async () => {
+ const testPlanVersion = {
+ phase: 'DRAFT',
+ testPlanReports: [
+ getFakeTestPlanReport({
+ atId: 1,
+ browserId: 2,
+ minimumAtVersionId: 1
+ })
+ ]
+ };
+
+ const statuses = await testPlanReportStatusesResolver(
+ testPlanVersion,
+ null,
+ context
+ );
+
+ const statusesWithReport = statuses.filter(
+ status => status.testPlanReport
+ );
+
+ expect(statuses.length).toBe(7);
+ expect(statusesWithReport.length).toBe(1);
+ expect(statusesWithReport[0].isRequired).toBe(true);
+ expect(statusesWithReport[0].at.name).toBe('JAWS');
+ expect(statusesWithReport[0].browser.name).toBe('Chrome');
+ expect(statusesWithReport[0].minimumAtVersion.id).toBe(1);
+ });
+
+ it('supports duplicate at / browser / atVersions', async () => {
+ const testPlanVersion = {
+ phase: 'DRAFT',
+ testPlanReports: [
+ getFakeTestPlanReport({
+ atId: 1,
+ browserId: 2,
+ minimumAtVersionId: 1
+ }),
+ getFakeTestPlanReport({
+ atId: 1,
+ browserId: 2,
+ minimumAtVersionId: 1
+ })
+ ]
+ };
+
+ const statuses = await testPlanReportStatusesResolver(
+ testPlanVersion,
+ null,
+ context
+ );
+
+ const statusesWithReport = statuses.filter(
+ status => status.testPlanReport
+ );
+
+ expect(statuses.length).toBe(8);
+ expect(statusesWithReport.length).toBe(2);
+ expect(statusesWithReport[0].isRequired).toBe(true);
+ expect(statusesWithReport[0].at.name).toBe('JAWS');
+ expect(statusesWithReport[0].browser.name).toBe('Chrome');
+ expect(statusesWithReport[0].minimumAtVersion.id).toBe(1);
+ expect(statusesWithReport[1].isRequired).toBe(false);
+ expect(statusesWithReport[1].at.name).toBe('JAWS');
+ expect(statusesWithReport[1].browser.name).toBe('Chrome');
+ expect(statusesWithReport[1].minimumAtVersion.id).toBe(1);
+ });
+
+ it('requires all versions to be covered', async () => {
+ await dbCleaner(async transaction => {
+ const context = getGraphQLContext({ req: { transaction } });
+
+ const getDate = dayAdjustment => {
+ return new Date(
+ Number(new Date()) + dayAdjustment * 1000 * 60 * 60 * 24
+ ).toISOString();
+ };
+
+ await createAtVersion({
+ values: { atId: 1, name: 'v2', releasedAt: getDate(-20) },
+ transaction
+ });
+
+ const v3 = await createAtVersion({
+ values: { atId: 1, name: 'v3', releasedAt: getDate(-15) },
+ transaction
+ });
+
+ await createAtVersion({
+ values: { atId: 1, name: 'v4', releasedAt: getDate(-10) },
+ transaction
+ });
+
+ await createAtVersion({
+ values: { atId: 1, name: 'v5', releasedAt: getDate(-5) },
+ transaction
+ });
+
+ const testPlanVersion = {
+ phase: 'RECOMMENDED',
+ testPlanReports: [
+ getFakeTestPlanReport({
+ atId: 1,
+ browserId: 2,
+ exactAtVersionId: v3.id
+ })
+ ]
+ };
+
+ const statuses = await testPlanReportStatusesResolver(
+ testPlanVersion,
+ null,
+ context
+ );
+
+ const jawsChromeStatuses = statuses.filter(
+ status =>
+ status.at.name === 'JAWS' &&
+ status.browser.name === 'Chrome'
+ );
+
+ const v2Status = jawsChromeStatuses.find(
+ status => status.exactAtVersion.name == 'v2'
+ );
+
+ expect(jawsChromeStatuses[0].exactAtVersion.name).toBe('v3');
+ expect(jawsChromeStatuses[0].isRequired).toBe(true);
+ expect(jawsChromeStatuses[0].testPlanReport).toBeTruthy();
+ expect(jawsChromeStatuses[1].exactAtVersion.name).toBe('v4');
+ expect(jawsChromeStatuses[1].isRequired).toBe(false);
+ expect(jawsChromeStatuses[1].testPlanReport).toBe(null);
+ expect(jawsChromeStatuses[2].exactAtVersion.name).toBe('v5');
+ expect(jawsChromeStatuses[2].isRequired).toBe(false);
+ expect(jawsChromeStatuses[2].testPlanReport).toBe(null);
+ expect(jawsChromeStatuses.length).toBe(3);
+ expect(v2Status).toBe(undefined); // Old versions can be ignored
+ });
+ });
+});
diff --git a/server/resolvers/testPlanReportsResolver.js b/server/resolvers/testPlanReportsResolver.js
index 5fab775a1..e927f7d7c 100644
--- a/server/resolvers/testPlanReportsResolver.js
+++ b/server/resolvers/testPlanReportsResolver.js
@@ -52,6 +52,16 @@ const testPlanReportsResolver = async (
if (testPlanReportRawAttributes.includes('conflictsLength'))
testPlanReportAttributes.push('metrics');
+ if (testPlanReportRawAttributes.includes('minimumAtVersion')) {
+ testPlanReportAttributes.push('atId');
+ testPlanReportAttributes.push('minimumAtVersionId');
+ }
+
+ if (testPlanReportRawAttributes.includes('exactAtVersion')) {
+ testPlanReportAttributes.push('atId');
+ testPlanReportAttributes.push('exactAtVersionId');
+ }
+
if (isFinal === undefined) {
// Do nothing
} else testPlanReportAttributes.push('markedFinalAt');
diff --git a/server/scripts/populate-test-data/pg_dump_test_data.sql b/server/scripts/populate-test-data/pg_dump_test_data.sql
index e942cb340..9a0cbb598 100644
--- a/server/scripts/populate-test-data/pg_dump_test_data.sql
+++ b/server/scripts/populate-test-data/pg_dump_test_data.sql
@@ -60,24 +60,24 @@ $$;
-- Data for Name: TestPlanReport; Type: TABLE DATA; Schema: public; Owner: atr
--
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "atId", "browserId") VALUES (1, get_test_plan_version_id(text 'Toggle Button', '1'), '2021-05-14 14:18:23.602-05', 1, 2);
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "atId", "browserId") VALUES (2, get_test_plan_version_id(text 'Select Only Combobox Example', '1'), '2021-05-14 14:18:23.602-05', 2, 1);
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "browserId", "vendorReviewStatus") VALUES (3, get_test_plan_version_id(text 'Modal Dialog Example', '1'), '2021-05-14 14:18:23.602-05', '2022-07-06', 1, 2, 'READY');
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "browserId", "vendorReviewStatus") VALUES (4, get_test_plan_version_id(text 'Modal Dialog Example', '1'), '2021-05-14 14:18:23.602-05', '2022-07-06', 2, 2, 'READY');
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "browserId", "vendorReviewStatus") VALUES (5, get_test_plan_version_id(text 'Modal Dialog Example', '1'), '2021-05-14 14:18:23.602-05', '2022-07-06', 3, 3, 'READY');
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "browserId", "vendorReviewStatus") VALUES (6, get_test_plan_version_id(text 'Checkbox Example (Mixed-State)', '1'), '2021-05-14 14:18:23.602-05', '2022-07-06', 3, 3, 'READY');
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "atId", "browserId") VALUES (7, get_test_plan_version_id(text 'Alert Example', '1'), '2021-05-14 14:18:23.602-05', 3, 1);
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "atId", "browserId", "vendorReviewStatus") VALUES (8, get_test_plan_version_id(text 'Modal Dialog Example', '1'), '2021-05-14 14:18:23.602-05', 1, 1, 'READY');
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "atId", "browserId", "vendorReviewStatus") VALUES (9, get_test_plan_version_id(text 'Modal Dialog Example', '1'), '2021-05-14 14:18:23.602-05', 2, 1, 'READY');
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "atId", "browserId", "vendorReviewStatus") VALUES (10, get_test_plan_version_id(text 'Modal Dialog Example', '1'), '2021-05-14 14:18:23.602-05', 3, 1, 'READY');
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "atId", "browserId", "vendorReviewStatus") VALUES (11, get_test_plan_version_id(text 'Modal Dialog Example', '1'), '2021-05-14 14:18:23.602-05', 3, 2, 'READY');
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "browserId", "vendorReviewStatus") VALUES (12, get_test_plan_version_id(text 'Checkbox Example (Mixed-State)', '1'), '2021-05-14 14:18:23.602-05', '2022-07-06', 1, 2, 'READY');
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "browserId", "vendorReviewStatus") VALUES (13, get_test_plan_version_id(text 'Checkbox Example (Mixed-State)', '1'), '2021-05-14 14:18:23.602-05', '2022-07-07', 2, 2, 'READY');
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "browserId", "vendorReviewStatus") VALUES (14, get_test_plan_version_id(text 'Toggle Button', '1'), '2021-05-14 14:18:23.602-05', '2022-07-07', 2, 2, 'READY');
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "browserId", "vendorReviewStatus") VALUES (15, get_test_plan_version_id(text 'Toggle Button', '1'), '2021-05-14 14:18:23.602-05', '2022-07-07', 3, 3, 'READY');
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "browserId", "vendorReviewStatus") VALUES (16, get_test_plan_version_id(text 'Command Button Example', '2'), '2023-12-13 14:18:23.602-05', '2023-12-14', 1, 2, 'READY');
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "browserId", "vendorReviewStatus") VALUES (17, get_test_plan_version_id(text 'Command Button Example', '2'), '2023-12-13 14:18:23.602-05', '2023-12-14', 2, 2, 'READY');
-INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "browserId", "vendorReviewStatus") VALUES (18, get_test_plan_version_id(text 'Command Button Example', '2'), '2023-12-13 14:18:23.602-05', '2023-12-14', 3, 3, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "atId", "minimumAtVersionId", "browserId") VALUES (1, get_test_plan_version_id(text 'Toggle Button', '1'), '2021-05-14 14:18:23.602-05', 1, 1, 2);
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "atId", "minimumAtVersionId", "browserId") VALUES (2, get_test_plan_version_id(text 'Select Only Combobox Example', '1'), '2021-05-14 14:18:23.602-05', 2, 2, 1);
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "minimumAtVersionId", "browserId", "vendorReviewStatus") VALUES (3, get_test_plan_version_id(text 'Modal Dialog Example', '1'), '2021-05-14 14:18:23.602-05', '2022-07-06', 1, 1, 2, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "minimumAtVersionId", "browserId", "vendorReviewStatus") VALUES (4, get_test_plan_version_id(text 'Modal Dialog Example', '1'), '2021-05-14 14:18:23.602-05', '2022-07-06', 2, 2, 2, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "minimumAtVersionId", "browserId", "vendorReviewStatus") VALUES (5, get_test_plan_version_id(text 'Modal Dialog Example', '1'), '2021-05-14 14:18:23.602-05', '2022-07-06', 3, 3, 3, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "minimumAtVersionId", "browserId", "vendorReviewStatus") VALUES (6, get_test_plan_version_id(text 'Checkbox Example (Mixed-State)', '1'), '2021-05-14 14:18:23.602-05', '2022-07-06', 3, 3, 3, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "atId", "minimumAtVersionId", "browserId") VALUES (7, get_test_plan_version_id(text 'Alert Example', '1'), '2021-05-14 14:18:23.602-05', 3, 3, 1);
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "atId", "minimumAtVersionId", "browserId", "vendorReviewStatus") VALUES (8, get_test_plan_version_id(text 'Modal Dialog Example', '1'), '2021-05-14 14:18:23.602-05', 1, 1, 1, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "atId", "minimumAtVersionId", "browserId", "vendorReviewStatus") VALUES (9, get_test_plan_version_id(text 'Modal Dialog Example', '1'), '2021-05-14 14:18:23.602-05', 2, 2, 1, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "atId", "minimumAtVersionId", "browserId", "vendorReviewStatus") VALUES (10, get_test_plan_version_id(text 'Modal Dialog Example', '1'), '2021-05-14 14:18:23.602-05', 3, 3, 1, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "atId", "minimumAtVersionId", "browserId", "vendorReviewStatus") VALUES (11, get_test_plan_version_id(text 'Modal Dialog Example', '1'), '2021-05-14 14:18:23.602-05', 3, 3, 2, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "exactAtVersionId", "browserId", "vendorReviewStatus") VALUES (12, get_test_plan_version_id(text 'Checkbox Example (Mixed-State)', '1'), '2021-05-14 14:18:23.602-05', '2022-07-06', 1, 1, 2, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "exactAtVersionId", "browserId", "vendorReviewStatus") VALUES (13, get_test_plan_version_id(text 'Checkbox Example (Mixed-State)', '1'), '2021-05-14 14:18:23.602-05', '2022-07-07', 2, 2, 2, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "minimumAtVersionId", "browserId", "vendorReviewStatus") VALUES (14, get_test_plan_version_id(text 'Toggle Button', '1'), '2021-05-14 14:18:23.602-05', '2022-07-07', 2, 2, 2, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "minimumAtVersionId", "browserId", "vendorReviewStatus") VALUES (15, get_test_plan_version_id(text 'Toggle Button', '1'), '2021-05-14 14:18:23.602-05', '2022-07-07', 3, 3, 3, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "minimumAtVersionId", "browserId", "vendorReviewStatus") VALUES (16, get_test_plan_version_id(text 'Command Button Example', '2'), '2023-12-13 14:18:23.602-05', '2023-12-14', 1, 1, 2, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "minimumAtVersionId", "browserId", "vendorReviewStatus") VALUES (17, get_test_plan_version_id(text 'Command Button Example', '2'), '2023-12-13 14:18:23.602-05', '2023-12-14', 2, 2, 2, 'READY');
+INSERT INTO "TestPlanReport" (id, "testPlanVersionId", "createdAt", "markedFinalAt", "atId", "minimumAtVersionId", "browserId", "vendorReviewStatus") VALUES (18, get_test_plan_version_id(text 'Command Button Example', '2'), '2023-12-13 14:18:23.602-05', '2023-12-14', 3, 3, 3, 'READY');
--
-- Data for Name: TestPlanVersion; Type: TABLE DATA; Schema: public; Owner: atr
diff --git a/server/tests/integration/graphql.test.js b/server/tests/integration/graphql.test.js
index ad49d7d5d..e9808d589 100644
--- a/server/tests/integration/graphql.test.js
+++ b/server/tests/integration/graphql.test.js
@@ -384,6 +384,25 @@ describe('graphql', () => {
name
releasedAt
}
+ testPlanReportStatuses {
+ __typename
+ isRequired
+ at {
+ id
+ }
+ exactAtVersion {
+ id
+ }
+ minimumAtVersion {
+ id
+ }
+ browser {
+ id
+ }
+ testPlanReport {
+ id
+ }
+ }
}
conflictTestPlanReport: testPlanReport(id: 2) {
__typename
@@ -506,6 +525,15 @@ describe('graphql', () => {
releasedAt
}
markedFinalAt
+ minimumAtVersion {
+ id
+ }
+ }
+ recommendedPhaseTestPlanReport: testPlanReport(id: 12) {
+ __typename
+ exactAtVersion {
+ id
+ }
}
testPlanReports {
id