Skip to content

ARIA AT App Database Implementation

Howard Edwards edited this page Jan 22, 2024 · 1 revision

ARIA-AT App Database Implementation

Last Edited: January 22, 2024

This document describes the current state of the ARIA-AT App’s database, as at the last edited date. This includes information on the entities, their columns, relationships and any other relevant information or considerations.

The most recent changes are based on discussions around ARIA-AT App Update Proposal V2.

Relevant Links:

Entity Relationship Diagram

ARIA-AT-App Database Diagram. Details on the entities and relationships follow this image.

Entities

At

Stores data on assistive technologies being referenced in the application.

Columns

id (int) - PK Auto incrementing identifier
name (text) Name of assistive technology

AtMode

Stores data on assistive technology modes.

Columns

atId (int) - PK FK Foreign key identifier for an assistive technology (At.id)
name (text) - PK Name of the assistive technology’s mode
screenText (text) Content to be displayed for the assistive technology's mode; sourced from AT_KEY-commands.csv > settings
instructions (text[]) Collection of instructions to be displayed for the assistive technology's mode; sourced from AT_KEY-commands.csv > instructions

AtVersion

Stores data on assistive technology versions.

Columns

id (int) - PK Auto incrementing identifier
name (text) Name of the assistive technology’s version
releasedAt (timestamp) Timestamp of when the browser version as released
atId (int) - FK Foreign key identifier for an assistive technology (At.id)

Browser

Stores data on browsers being referenced in the application.

Columns

id (int) - PK Auto incrementing identifier
name (text) Name of browser

BrowserVersion

Stores data on browser versions.

Columns

id (int) - PK Auto incrementing identifier
name (text) Name of the browser’s version
browserId (int) - FK Foreign key identifier for a browser (Browser.id)

Role

Stores data on the user roles being used in the system

Columns

name (text) - PK Name of the role

TestPlan

Stores up to date information on a Test Plan. Do note that even though the name here represents what the WM calls a test plan, it isn’t the same. This is more synonymous with the references.csv as pulled from the w3c/aria-at/tests/PATTERN/data/references.csv folder.

This represents a source of truth for what is the most up to date references for a Test Plan’s name and information in the application. It should dramatically reduce the need to derive test plan information unnecessarily during queries.

Columns

id (int) - PK Auto incrementing identifier
title (text) The most recent title found for the test plan. This comes from the tests’ references.csv file
directory (text) The most recent identifier name found for the test plan. This comes from the tests’ directory’s names

TestPlanReport

Stores data on test plan reports in the system, which is primarily used to indicate the overall state of an individual report covering a unique combination of a Test Plan Version and its associated At and Browser. A derived collection of TestPlanReports is what can be best considered as the WM's definition of a Test Plan.

Columns

id (int) - PK Auto incrementing identifier
testPlanVersionId (int) - FK Foreign key identifier for a Test Plan Version (TestPlanVersion.id)
atId (int) - FK Foreign key identifier for an assistive technology (At.id)
browserId (int) - FK Foreign key identifier for a browser (Browser.id)
vendorReviewStatus (text) An enumerated field which should only take IN_PROGRESS and READY, which represents a state of “readiness” when a test plan report can be reviewed if the TestPlanVersion.phase is CANDIDATE
metrics (json) An object holding calculated data such as, but not limited to the number of tests, the number of conflicts, the number of tests failed, passed, and more for the test plan report. Used for display purposes when applicable, to guarantee a faster page load
createdAt (timestamp) The time the test plan report was created (added to the Test Queue)
markedFinalAt (timestamp) The time the test plan report was marked as being able to be included in any final reports for the associated Test Plan Version

TestPlanRun

Stores data on the recorded test results of a specific User, for an assigned TestPlanReport.

Columns

id (int) - PK Auto incrementing identifier
testerUserId (int) - FK Foreign key identifier for a user running this test plan run (User.id)
testPlanReportId (int) - FK Foreign key identifier for the test plan report (TestPlanReport.id) this run is attached to
testResults (json) An object holding the collection of test run results which have been persisted by the user’s actions, such as navigating through a Test Run page or submitted a result

TestPlanVersion

Used to capture a snapshot of the w3c/aria-at/tests at a given time. The data is separated by each defined pattern (alert, checkbox, etc).

Columns

id (int) - PK Auto incrementing identifier
testPlanId (int) - FK Foreign key identifier for the test plan (TestPlan)
phase (text) An enumerated field which should only take RD, DRAFT, CANDIDATE, RECOMMENDED and DEPRECATED which represents different phases a test plan version can be
gitSha (text) The git sha of the default branch when the information of the test(s) was pulled from w3c/aria-at
gitMessage (text) The git message of the default branch when the information of the test(s) was pulled from w3c/aria-at
testPageUrl (text) Generated url for the tests found in the w3c/aria-at/tests/*pattern*/reference folder. The application opens this link through a proxy when needing to view a test from the application (such as with the Open Test button found on the Test Run page)
hashedTests (text) Used to uniquely identify tests for a Test Plan Version. A huge benefit of this is not having to capture every test plan unnecessarily with no change, when a new "version" of the tests are imported.
versionString (text) Used to uniquely identify versions of a Test Plan Version for display purposes in the format of YYYY.MM.DD once they are imported. If multiple versions are imported on the same day, the subsequent will be appended with '-x', such that the x represents the order in which that specific version was imported for that day. eg. '2024.01.22, 2024.01.22-1'
tests (json) An object containing information on all tests related to the test plan version for the referenced pattern
metadata (json) An object containing information with other miscellaneous data found in the references.csv, along with which version of the test format is being used
updatedAt (timestamp) Time when the test plan version was imported. This can also be thought of as having the Research and Development phase being completed (RD)
draftPhaseReachedAt (timestamp) Time when the test plan version was promoted to DRAFT (moved to the Test Queue)
candidatePhaseReachedAt (timestamp) The time the test plan version was promoted to CANDIDATE
recommendedPhaseTargetDate (timestamp) The time the test plan version should be promoted to RECOMMENDED. This is calculated based on the candidatePhaseReachedAt and the 180 days described in the WM for the recommended time the Test Plan should remain in the CANDIDATE phase. This value can be manually updated
recommendedPhaseReachedAt (timestamp) The time the test plan version was promoted to RECOMMENDED
deprecatedAt (timestamp) The time the test plan version was set to DEPRECATED

User

Data on users which are allowed to sign into the application.

Columns

id (int) - PK Auto incrementing identifier
username (text) Name of user (GitHub handle)
createdAt (timestamp) Time when the user was created
updatedAt (timestamp) Time when the user was last updated

UserRoles

Used to support a many-to-many relationship between users and roles. Users can have multiple roles.

Columns

userId (int) - PK FK Foreign key identifier for a user (User.id)
roleName (text) - PK FK Foreign key identifier for a role (Role.id)

Relationships

At

  • One-to-many with AtMode
  • One-to-many with AtVersion
  • One-to-many with TestPlanReport

AtMode

  • Many-to-one with At

AtVersion

  • Many-to-one with At

Browser

  • One-to-many with BrowserVersion
  • One-to-many with TestPlanReport

BrowserVersion

  • Many-to-one with Browser

Role

  • One-to-many with UserRoles

TestPlan

  • One-to-many with TestPlanVersion

TestPlanReport

  • Many-to-one with At
  • Many-to-one with Browser
  • One-to-many with TestPlanRun
  • Many-to-one with TestPlanVersion

TestPlanRun

  • Many-to-one with TestPlanReport
  • Many-to-one with User

TestPlanVersion

  • Many-to-one with TestPlan
  • One-to-many with TestPlanVersion

User

  • One-to-many with TestPlanRun
  • One-to-many with UserRoles

UserRoles

  • Many-to-one with Role
  • Many-to-one with User