From 3658df876e216f4f6366730c1acce4440e4c9785 Mon Sep 17 00:00:00 2001 From: Steven Lambert <2433219+straker@users.noreply.github.com> Date: Mon, 18 Dec 2023 13:34:35 -0700 Subject: [PATCH] ci: add matrix node test (#4275) * ci: add matrix node test * :robot: Automated formatting fixes * use node orb * full node range * fix npm command * :robot: Automated formatting fixes * fix how jsdom is installed * comments * drop down support to just 6 + LTS * use all-rules.html * read file * move node test to GHA * fix gha * fix upload * try again? * pin to v3 for upload/download * fix prettier action * output ignore file * cat not echo --------- Co-authored-by: straker --- .circleci/config.yml | 13 +- .github/workflows/format.yml | 2 +- .github/workflows/test.yml | 45 + .prettierignore | 2 +- locales/el.json | 2112 +++++++++++++++++----------------- package.json | 3 +- test/node/node.js | 93 ++ test/node/package.json | 4 + 8 files changed, 1209 insertions(+), 1065 deletions(-) create mode 100644 .github/workflows/test.yml create mode 100644 test/node/node.js create mode 100644 test/node/package.json diff --git a/.circleci/config.yml b/.circleci/config.yml index 8020cabbef..f542483647 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -34,6 +34,7 @@ commands: browser-tools-job: steps: - browser-tools/install-browser-tools + jobs: # Fetch and cache dependencies. dependencies_unix: @@ -240,15 +241,15 @@ jobs: - <<: *restore_dependency_cache_unix - run: npm run test:rule-help-version - # Test node API - test_node: + # Test jsdom API + test_jsdom: <<: *defaults <<: *unix_box steps: - checkout - <<: *restore_dependency_cache_unix - <<: *restore_build - - run: npm run test:node + - run: npm run test:jsdom # Release a "next" version next_release: @@ -360,7 +361,7 @@ workflows: - test_rule_help_version: requires: - build_unix - - test_node: + - test_jsdom: requires: - build_unix # Verify the sri history is correct @@ -385,7 +386,7 @@ workflows: - test_virtual_rules - build_api_docs - test_rule_help_version - - test_node + - test_jsdom - verify_sri filters: branches: @@ -403,7 +404,7 @@ workflows: - test_virtual_rules - build_api_docs - test_rule_help_version - - test_node + - test_jsdom filters: branches: only: develop diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index eaaa0d37a6..74898ee2d4 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -17,7 +17,7 @@ jobs: cache: 'npm' # Workflows are not allowed to edit workflows. As result, we need to prevent Prettier from formatting them. - name: Prevent workflows from being formatted - run: echo ".github" >> .prettierignore + run: echo ".github" >> .prettierignore && cat .prettierignore - run: npm run fmt # Prevent the prettierignore change from being committed. - run: git checkout .prettierignore diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000000..329620c89b --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,45 @@ +name: Tests + +on: + pull_request: + push: + branches: + - master + - develop + +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 5 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: 'npm' + - run: npm ci + - run: npm run build + # v4 download seems to have some flakiness with the download of artifacts so pinning to v3 for now + # @see https://github.com/actions/download-artifact/issues/249 + - uses: actions/upload-artifact@v3 + with: + name: axe-core + path: axe.js + retention-days: 1 + + test_node: + strategy: + matrix: + node: [6, 18, 20] + runs-on: ubuntu-latest + timeout-minutes: 5 + needs: build + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node}} + - uses: actions/download-artifact@v3 + with: + name: axe-core + - run: npm run test:node \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 5ae2c1f2b3..2bd1eb1157 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,2 @@ node_modules/ -doc/api \ No newline at end of file +doc/api diff --git a/locales/el.json b/locales/el.json index 7d12849a81..b963ccede8 100644 --- a/locales/el.json +++ b/locales/el.json @@ -1,1067 +1,1067 @@ { - "lang": "el", - "rules": { - "accesskeys": { - "description": "Διασφαλίζει ότι η τιμή κάθε χαρακτηριστικού accesskey είναι μοναδική", - "help": "η τιμή κάθε χαρακτηριστικού accesskey πρέπει να είναι μοναδική" - }, - "area-alt": { - "description": "Διασφαλίζει ότι τα στοιχεία των χαρτών εικόνας έχουν εναλλακτικό κείμενο", - "help": "Τα ενεργά στοιχεία πρέπει να έχουν εναλλακτικό κείμενο" - }, - "aria-allowed-attr": { - "description": "Διασφαλίζει ότι o ρόλος του στοιχείου υποστηρίζει τα χαρακτηριστικά ARIA", - "help": "Τα στοιχεία πρέπει να χρησιμοποιούν μόνο υποστηριζόμενα χαρακτηριστικά ARIA" - }, - "aria-allowed-role": { - "description": "Διασφαλίζει ότι το χαρακτηριστικό role έχει την κατάλληλη τιμή για το στοιχείο", - "help": "Ο ρόλος ARIA θα πρέπει να είναι κατάλληλος για το στοιχείο" - }, - "aria-command-name": { - "description": "Διασφαλίζει ότι κάθε button, link ή menuitem ARIA έχει ένα προσβάσιμο όνομα", - "help": "Οι εντολές ARIA πρέπει να έχουν ένα προσβάσιμο όνομα" - }, - "aria-dialog-name": { - "description": "Διασφαλίζει ότι κάθε ARIA σε κόμβο διαλόγου ή διαλόγου ειδοποίησης έχει ένα προσβάσιμο όνομα", - "help": "Οι ARIA κόμβοι διαλόγου καί διαλόγου ειδοποίησης πρέπει να έχουν ένα προσβάσιμο όνομα" - }, - "aria-hidden-body": { - "description": "Διασφαλίζει ότι το aria-hidden='true' δεν υπάρχει στο σώμα (body) του εγγράφου.", - "help": "Το aria-hidden='true' δεν πρέπει να υπάρχει στο σώμα (body) του εγγράφου." - }, - "aria-hidden-focus": { - "description": "Διασφαλίζει ότι τα κρυφά στοιχεία aria δεν είναι εστιάσιμα ούτε περιέχουν στοιχεία που μπορούν να εστιαστούν", - "help": "Το κρυφό στοιχείο ARIA δεν πρέπει να έχει δυνατότητα εστίασης ή να περιέχει στοιχεία με δυνατότητα εστίασης" - }, - "aria-input-field-name": { - "description": "Διασφαλίζει ότι κάθε πεδίο εισαγωγής ARIA έχει ένα προσβάσιμο όνομα", - "help": "Τα πεδία εισαγωγής ARIA πρέπει να έχουν προσβάσιμο όνομα" - }, - "aria-meter-name": { - "description": "Διασφαλίζει ότι κάθε κόμβος μετρητή ARIA έχει ένα προσβάσιμο όνομα", - "help": "Οι κόμβοι μετρητών ARIA πρέπει να έχουν προσβάσιμο όνομα" - }, - "aria-progressbar-name": { - "description": "Διασφαλίζει ότι κάθε κόμβος γραμμής προόδου ARIA έχει ένα προσβάσιμο όνομα", - "help": "Οι κόμβοι γραμμής προόδου ARIA πρέπει να έχουν ένα προσβάσιμο όνομα" - }, - "aria-required-attr": { - "description": "Διασφαλίζει ότι τα στοιχεία με ρόλους ARIA έχουν όλα τα απαιτούμενα χαρακτηριστικά ARIA", - "help": "Πρέπει να παρέχονται τα απαιτούμενα χαρακτηριστικά ARIA" - }, - "aria-required-children": { - "description": "Διασφαλίζει ότι τα στοιχεία με ρόλο ARIA που απαιτούν θυγατρικούς ρόλους περιέχουν τα στοιχεία", - "help": "Ορισμένοι ρόλοι ARIA πρέπει να περιέχουν συγκεκριμένα παιδιά" - }, - "aria-required-parent": { - "description": "Διασφαλίζει ότι τα στοιχεία με ρόλο ARIA που απαιτούν γονικούς ρόλους περιέχονται σε αυτά", - "help": "Συγκεκριμένοι ρόλοι ARIA πρέπει να περιέχονται από συγκεκριμένους γονείς" - }, - "aria-roledescription": { - "description": "Διασφαλίζει ότι το aria-roledescription χρησιμοποιείται μόνο σε στοιχεία με έμμεσο ή ρητό ρόλο", - "help": "Το aria-roledescription πρέπει να είναι σε στοιχεία με σημασιολογικό ρόλο" - }, - "aria-roles": { - "description": "Διασφαλίζει ότι όλα τα στοιχεία με χαρακτηριστικό ρόλου χρησιμοποιούν μια έγκυρη τιμή", - "help": "Οι ρόλοι ARIA που χρησιμοποιούνται πρέπει να συμμορφώνονται με έγκυρες τιμές" - }, - "aria-text": { - "description": "Διασφαλίζει ότι το \"role=text\" χρησιμοποιείται σε στοιχεία χωρίς δυνατότητα εστίασης", - "help": "Το \"role=text\" δεν πρέπει να έχει εστιάσιμους απογόνους" - }, - "aria-toggle-field-name": { - "description": "Διασφαλίζει ότι κάθε πεδίο εναλλαγής ARIA έχει ένα προσβάσιμο όνομα", - "help": "Τα πεδία εναλλαγής ARIA πρέπει να έχουν προσβάσιμο όνομα" - }, - "aria-tooltip-name": { - "description": "Διασφαλίζει ότι κάθε κόμβος tooltip ARIA έχει ένα προσβάσιμο όνομα", - "help": "Οι κόμβοι tooltip ARIA πρέπει να έχουν προσβάσιμο όνομα" - }, - "aria-treeitem-name": { - "description": "Διασφαλίζει ότι κάθε κόμβος treeitem ARIA έχει ένα προσβάσιμο όνομα", - "help": "Οι κόμβοι treeitem ARIA θα πρέπει να έχουν ένα προσβάσιμο όνομα" - }, - "aria-valid-attr-value": { - "description": "Διασφαλίζει ότι όλα τα χαρακτηριστικά ARIA έχουν έγκυρες τιμές", - "help": "Τα χαρακτηριστικά ARIA πρέπει να είναι σύμφωνα με έγκυρες τιμές" - }, - "aria-valid-attr": { - "description": "Διασφαλίζει ότι τα χαρακτηριστικά που ξεκινούν με aria- είναι έγκυρα χαρακτηριστικά ARIA", - "help": "Τα χαρακτηριστικά ARIA πρέπει να είναι σύμφωνα με έγκυρα ονόματα" - }, - "audio-caption": { - "description": "Διασφαλίζει ότι τα στοιχεία