diff --git a/.github/workflows/auto-approve-run.yml b/.github/workflows/auto-approve-run.yml index b5296f7943..b219a7ce81 100644 --- a/.github/workflows/auto-approve-run.yml +++ b/.github/workflows/auto-approve-run.yml @@ -21,7 +21,7 @@ jobs: run_id: ${{ github.event.workflow_run.id }} - name: Read the pr_num file id: pr_num_reader - uses: juliangruber/read-file-action@02bbba9876a8f870efd4ad64e3b9088d3fb94d4b # v1.1.6 + uses: juliangruber/read-file-action@b549046febe0fe86f8cb4f93c24e284433f9ab58 # v1.1.7 with: path: ./pr_num/pr_num.txt - uses: hmarr/auto-approve-action@44888193675f29a83e04faf4002fa8c0b537b1e4 # v3.2.1 diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 1234c9d370..4cea3b06b3 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -21,7 +21,7 @@ jobs: run: npm ci - name: Build Legal run: npm run license-report - - uses: lycheeverse/lychee-action@ec3ed119d4f44ad2673a7232460dc7dff59d2421 + - uses: lycheeverse/lychee-action@c053181aa0c3d17606addfe97a9075a32723548a with: fail: true jobSummary: false diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index ea7ec9e4f0..1c2ba30671 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -34,7 +34,7 @@ jobs: - name: Cache playwright browsers id: cache-playwright - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | ~/.cache/ms-playwright diff --git a/.github/workflows/publish-chrome-development.yml b/.github/workflows/publish-chrome-development.yml index 7addfc9998..3b580e3dae 100644 --- a/.github/workflows/publish-chrome-development.yml +++ b/.github/workflows/publish-chrome-development.yml @@ -38,7 +38,7 @@ jobs: return attempt < max ? attempt + 1 : ''; } - - uses: robinraju/release-downloader@efa4cd07bd0195e6cc65e9e30c251b49ce4d3e51 # pin@v1.8 + - uses: robinraju/release-downloader@368754b9c6f47c345fcfbf42bcb577c2f0f5f395 # pin@v1.9 with: tag: ${{ github.ref_name }} fileName: "*" diff --git a/.github/workflows/publish-chrome.yml b/.github/workflows/publish-chrome.yml index 04d3bc154b..3dc37039e3 100644 --- a/.github/workflows/publish-chrome.yml +++ b/.github/workflows/publish-chrome.yml @@ -38,7 +38,7 @@ jobs: return attempt < max ? attempt + 1 : ''; } - - uses: robinraju/release-downloader@efa4cd07bd0195e6cc65e9e30c251b49ce4d3e51 # pin@v1.8 + - uses: robinraju/release-downloader@368754b9c6f47c345fcfbf42bcb577c2f0f5f395 # pin@v1.9 with: tag: ${{ github.ref_name }} fileName: "*" diff --git a/.github/workflows/publish-firefox-development.yml b/.github/workflows/publish-firefox-development.yml index 1181277a43..c92b9d24c9 100644 --- a/.github/workflows/publish-firefox-development.yml +++ b/.github/workflows/publish-firefox-development.yml @@ -20,7 +20,7 @@ jobs: outputs: hashes: ${{ steps.hash.outputs.hashes }} steps: - - uses: robinraju/release-downloader@efa4cd07bd0195e6cc65e9e30c251b49ce4d3e51 # pin@v1.8 + - uses: robinraju/release-downloader@368754b9c6f47c345fcfbf42bcb577c2f0f5f395 # pin@v1.9 with: tag: ${{ github.ref_name }} fileName: "*" diff --git a/.github/workflows/publish-firefox.yml b/.github/workflows/publish-firefox.yml index 424ae8c1e8..f6499d01a7 100644 --- a/.github/workflows/publish-firefox.yml +++ b/.github/workflows/publish-firefox.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest environment: cd steps: - - uses: robinraju/release-downloader@efa4cd07bd0195e6cc65e9e30c251b49ce4d3e51 # pin@v1.8 + - uses: robinraju/release-downloader@368754b9c6f47c345fcfbf42bcb577c2f0f5f395 # pin@v1.9 with: tag: ${{ github.ref_name }} fileName: "*" diff --git a/package-lock.json b/package-lock.json index 8f0d5d7b3f..8dc1b509c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,14 +40,14 @@ "eslint": "^8.56.0", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-header": "^3.1.1", - "eslint-plugin-jsdoc": "^47.0.1", + "eslint-plugin-jsdoc": "^48.0.4", "eslint-plugin-jsonc": "^2.11.2", "eslint-plugin-no-unsanitized": "^4.0.2", "eslint-plugin-unused-imports": "^3.0.0", "eslint-plugin-vitest": "^0.3.20", "fake-indexeddb": "^5.0.2", "html-validate": "^8.8.0", - "jsdom": "^23.0.1", + "jsdom": "^24.0.0", "jszip": "^3.10.1", "license-report": "^6.5.0", "stylelint": "^16.1.0", @@ -2261,15 +2261,15 @@ } }, "node_modules/cssstyle": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", - "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", + "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", "dev": true, "dependencies": { "rrweb-cssom": "^0.6.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/data-urls": { @@ -2661,9 +2661,9 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "47.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-47.0.1.tgz", - "integrity": "sha512-h96OSnZMs8Dph82cw09gE3rVHP6jdyRf4JXVnZRi6jTa8IdqSM5/dtgh0LWetYBDNXvxzMXP9mRhxiD5Oxczug==", + "version": "48.0.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.0.4.tgz", + "integrity": "sha512-A0cH+5svWPXzGZszBjXA1t0aAqVGS+/x3i02KFmb73rU0iMLnadEcVWcD/dGBZHIfAMKr3YpWh58f6wn4N909w==", "dev": true, "dependencies": { "@es-joy/jsdoccomment": "~0.41.0", @@ -2677,7 +2677,7 @@ "spdx-expression-parse": "^4.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" @@ -3739,12 +3739,12 @@ } }, "node_modules/jsdom": { - "version": "23.0.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.0.1.tgz", - "integrity": "sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ==", + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.0.0.tgz", + "integrity": "sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==", "dev": true, "dependencies": { - "cssstyle": "^3.0.0", + "cssstyle": "^4.0.1", "data-urls": "^5.0.0", "decimal.js": "^10.4.3", "form-data": "^4.0.0", @@ -3763,7 +3763,7 @@ "whatwg-encoding": "^3.1.1", "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0", - "ws": "^8.14.2", + "ws": "^8.16.0", "xml-name-validator": "^5.0.0" }, "engines": { @@ -6266,9 +6266,9 @@ } }, "node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, "engines": { "node": ">=10.0.0" @@ -7762,9 +7762,9 @@ "dev": true }, "cssstyle": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", - "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", + "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", "dev": true, "requires": { "rrweb-cssom": "^0.6.0" @@ -8072,9 +8072,9 @@ "requires": {} }, "eslint-plugin-jsdoc": { - "version": "47.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-47.0.1.tgz", - "integrity": "sha512-h96OSnZMs8Dph82cw09gE3rVHP6jdyRf4JXVnZRi6jTa8IdqSM5/dtgh0LWetYBDNXvxzMXP9mRhxiD5Oxczug==", + "version": "48.0.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.0.4.tgz", + "integrity": "sha512-A0cH+5svWPXzGZszBjXA1t0aAqVGS+/x3i02KFmb73rU0iMLnadEcVWcD/dGBZHIfAMKr3YpWh58f6wn4N909w==", "dev": true, "requires": { "@es-joy/jsdoccomment": "~0.41.0", @@ -8815,12 +8815,12 @@ "dev": true }, "jsdom": { - "version": "23.0.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.0.1.tgz", - "integrity": "sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ==", + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.0.0.tgz", + "integrity": "sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==", "dev": true, "requires": { - "cssstyle": "^3.0.0", + "cssstyle": "^4.0.1", "data-urls": "^5.0.0", "decimal.js": "^10.4.3", "form-data": "^4.0.0", @@ -8839,7 +8839,7 @@ "whatwg-encoding": "^3.1.1", "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0", - "ws": "^8.14.2", + "ws": "^8.16.0", "xml-name-validator": "^5.0.0" } }, @@ -10623,9 +10623,9 @@ } }, "ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, "requires": {} }, diff --git a/package.json b/package.json index 095ae2140f..7497e857a9 100644 --- a/package.json +++ b/package.json @@ -68,14 +68,14 @@ "eslint": "^8.56.0", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-header": "^3.1.1", - "eslint-plugin-jsdoc": "^47.0.1", + "eslint-plugin-jsdoc": "^48.0.4", "eslint-plugin-jsonc": "^2.11.2", "eslint-plugin-no-unsanitized": "^4.0.2", "eslint-plugin-unused-imports": "^3.0.0", "eslint-plugin-vitest": "^0.3.20", "fake-indexeddb": "^5.0.2", "html-validate": "^8.8.0", - "jsdom": "^23.0.1", + "jsdom": "^24.0.0", "jszip": "^3.10.1", "license-report": "^6.5.0", "stylelint": "^16.1.0", diff --git a/test/dictionary-data.write.js b/test/dictionary-data.write.js index d88bd3cd2b..b27007e6f7 100644 --- a/test/dictionary-data.write.js +++ b/test/dictionary-data.write.js @@ -35,7 +35,10 @@ const dirname = path.dirname(fileURLToPath(import.meta.url)); const dictionaryName = 'Test Dictionary 2'; const test = await createTranslatorTest(void 0, path.join(dirname, 'data/dictionaries/valid-dictionary1'), dictionaryName); -test('Write dictionary data expected data', async ({translator, expect}) => { +test('Write dictionary data expected data', async ({window, translator, expect}) => { + // The window property needs to be referenced for it to be initialized. + // It is needed for DOM access for structured content. + void window; const testInputsFilePath = path.join(dirname, 'data/translator-test-inputs.json'); /** @type {import('test/translator').TranslatorTestInputs} */ const {optionsPresets, tests} = parseJson(readFileSync(testInputsFilePath, {encoding: 'utf8'}));