diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ebe71a379c..63ecb6dd59 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -91,47 +91,49 @@ jobs: - name: Build run: pnpm run --filter ${{matrix.workspace}} build - # browserstack-test: - # name: Browserstack ${{matrix.workspace}} ${{ matrix.launcher }} - # runs-on: ubuntu-latest - # timeout-minutes: 20 - # needs: [test] - # strategy: - # fail-fast: false - # max-parallel: 2 - # matrix: - # workspace: - # - frontend - # - test-app - # launcher: - # - BS_OSX_Safari - # - BS_MS_Edge - # - BS_IOS_SAFARI - # - BS_CHROME_ANDROID - # steps: - # - uses: actions/checkout@v4 - # - uses: pnpm/action-setup@v4 - # with: - # version: 9 - # - uses: actions/setup-node@v4 - # with: - # node-version: 20 - # cache: pnpm - # - run: pnpm install - # - name: test:browserstack ${{ matrix.launcher }} - # env: - # BROWSERSTACK_USERNAME: iliosgithub_1UGowwsqE - # # This is in plaintext on purpose. It has no privileged access to anything (this is a free - # # account) and it allows us to run browserstack tests against PRs. - # BROWSERSTACK_ACCESS_KEY: yJjw6sE6izkpUw9oasGT - # # The following is necessary when using browserstack under matrix builds on Github Actions - # # The Job ID + Run ID isn't unique across matrix runs and will fail when run simultaneously - # BROWSERSTACK_LOCAL_ID_SUFFIX: ${{ matrix.launcher }} - # run: | - # pnpm --filter ${{matrix.workspace}} exec ember browserstack:connect - # pnpm --filter ${{matrix.workspace}} exec ember test --test-port=7774 --host=127.0.0.1 --config-file=testem.browserstack.js --launch=${{ matrix.launcher }} - # pnpm --filter ${{matrix.workspace}} exec ember browserstack:disconnect - # pnpm --filter ${{matrix.workspace}} exec ember browserstack:results + browserstack-test: + name: Browserstack ${{matrix.workspace}} ${{ matrix.launcher }} + runs-on: ubuntu-latest + timeout-minutes: 20 + needs: [test] + strategy: + fail-fast: false + max-parallel: 2 + matrix: + workspace: + - frontend + - test-app + - lti-course-manager + - lti-dashboard + launcher: + - BS_OSX_Safari + - BS_MS_Edge + - BS_IOS_SAFARI + - BS_CHROME_ANDROID + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + with: + version: 9 + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + - run: pnpm install + - name: test:browserstack ${{ matrix.launcher }} + env: + BROWSERSTACK_USERNAME: iliosgithub_1UGowwsqE + # This is in plaintext on purpose. It has no privileged access to anything (this is a free + # account) and it allows us to run browserstack tests against PRs. + BROWSERSTACK_ACCESS_KEY: yJjw6sE6izkpUw9oasGT + # The following is necessary when using browserstack under matrix builds on Github Actions + # The Job ID + Run ID isn't unique across matrix runs and will fail when run simultaneously + BROWSERSTACK_LOCAL_ID_SUFFIX: ${{ matrix.launcher }} + run: | + pnpm --filter ${{matrix.workspace}} exec ember browserstack:connect + pnpm --filter ${{matrix.workspace}} exec ember test --test-port=7774 --host=127.0.0.1 --config-file=testem.browserstack.js --launch=${{ matrix.launcher }} + pnpm --filter ${{matrix.workspace}} exec ember browserstack:disconnect + pnpm --filter ${{matrix.workspace}} exec ember browserstack:results firefox-test: name: ${{matrix.workspace}} Firefox ${{ matrix.firefox-version }} diff --git a/packages/lti-course-manager/.eslintrc.js b/packages/lti-course-manager/.eslintrc.js index 7a552ec57f..d91afbc5a2 100644 --- a/packages/lti-course-manager/.eslintrc.js +++ b/packages/lti-course-manager/.eslintrc.js @@ -29,6 +29,7 @@ module.exports = { './.template-lintrc.js', './ember-cli-build.js', './testem.js', + './testem.browserstack.js', './blueprints/*/index.js', './config/**/*.js', './lib/*/index.js', diff --git a/packages/lti-course-manager/package.json b/packages/lti-course-manager/package.json index 3586d7be57..7ea402452f 100644 --- a/packages/lti-course-manager/package.json +++ b/packages/lti-course-manager/package.json @@ -55,6 +55,7 @@ "ember-cli": "~5.8.1", "ember-cli-app-version": "^6.0.1", "ember-cli-babel": "^8.2.0", + "ember-cli-browserstack": "^3.0.0", "ember-cli-clean-css": "^3.0.0", "ember-cli-dependency-checker": "^3.3.2", "ember-cli-dependency-lint": "2.0.1", @@ -93,6 +94,7 @@ "stylelint-config-standard": "^36.0.0", "stylelint-prettier": "^5.0.0", "stylelint-scss": "^6.2.1", + "testem-failure-only-reporter": "^1.0.0", "tracked-built-ins": "^3.3.0", "webpack": "^5.91.0" }, diff --git a/packages/lti-course-manager/testem.browserstack.js b/packages/lti-course-manager/testem.browserstack.js new file mode 100644 index 0000000000..29bec7f1b5 --- /dev/null +++ b/packages/lti-course-manager/testem.browserstack.js @@ -0,0 +1,72 @@ +const FailureOnlyPerBrowserReporter = require('testem-failure-only-reporter/grouped-by-browser'); +const defaultArgs = ['-t', '1800', '--browserstack.video', 'false', '--u', '']; + +const BrowserStackLaunchers = { + BS_OSX_Safari: { + exe: 'node_modules/.bin/browserstack-launch', + args: [ + '--os', + 'OS X', + '--osv', + 'Monterey', + '--b', + 'safari', + '--bv', + 'latest', // Will always be 15.x on Monterey + ...defaultArgs, + ], + protocol: 'browser', + }, + BS_MS_Edge: { + exe: 'node_modules/.bin/browserstack-launch', + args: ['--os', 'Windows', '--osv', '11', '--b', 'edge', '--bv', '115', ...defaultArgs], + protocol: 'browser', + }, + BS_IOS_SAFARI: { + exe: 'node_modules/.bin/browserstack-launch', + args: [ + '--real_mobile', + 'true', + '--os', + 'ios', + '--osv', + '16', + '--b', + 'iphone', + '--device', + 'iPhone 14 Pro', + ...defaultArgs, + ], + protocol: 'browser', + }, + BS_CHROME_ANDROID: { + exe: 'node_modules/.bin/browserstack-launch', + args: [ + '--real_mobile', + 'true', + '--os', + 'android', + '--osv', + '13.0', + '--b', + 'android', + '--device', + 'Google Pixel 7', + ...defaultArgs, + ], + protocol: 'browser', + }, +}; + +module.exports = { + test_page: 'tests/index.html?hidepassed&hideskipped&timeout=60000', + timeout: 1800, + reporter: FailureOnlyPerBrowserReporter, + browser_start_timeout: 2000, + browser_disconnect_timeout: 120, + parallel: 4, + disable_watching: true, + launchers: BrowserStackLaunchers, + launch_in_dev: [], + launch_in_ci: Object.keys(BrowserStackLaunchers), +}; diff --git a/packages/lti-dashboard/.eslintrc.js b/packages/lti-dashboard/.eslintrc.js index 7a552ec57f..d91afbc5a2 100644 --- a/packages/lti-dashboard/.eslintrc.js +++ b/packages/lti-dashboard/.eslintrc.js @@ -29,6 +29,7 @@ module.exports = { './.template-lintrc.js', './ember-cli-build.js', './testem.js', + './testem.browserstack.js', './blueprints/*/index.js', './config/**/*.js', './lib/*/index.js', diff --git a/packages/lti-dashboard/package.json b/packages/lti-dashboard/package.json index be67a65dc3..5b241947ad 100644 --- a/packages/lti-dashboard/package.json +++ b/packages/lti-dashboard/package.json @@ -54,6 +54,7 @@ "ember-cli": "~5.8.1", "ember-cli-app-version": "^6.0.1", "ember-cli-babel": "^8.2.0", + "ember-cli-browserstack": "^3.0.0", "ember-cli-clean-css": "^3.0.0", "ember-cli-dependency-checker": "^3.3.2", "ember-cli-dependency-lint": "2.0.1", @@ -93,6 +94,7 @@ "stylelint-config-standard": "^36.0.0", "stylelint-prettier": "^5.0.0", "stylelint-scss": "^6.2.1", + "testem-failure-only-reporter": "^1.0.0", "tracked-built-ins": "^3.3.0", "webpack": "^5.91.0" }, diff --git a/packages/lti-dashboard/testem.browserstack.js b/packages/lti-dashboard/testem.browserstack.js new file mode 100644 index 0000000000..29bec7f1b5 --- /dev/null +++ b/packages/lti-dashboard/testem.browserstack.js @@ -0,0 +1,72 @@ +const FailureOnlyPerBrowserReporter = require('testem-failure-only-reporter/grouped-by-browser'); +const defaultArgs = ['-t', '1800', '--browserstack.video', 'false', '--u', '']; + +const BrowserStackLaunchers = { + BS_OSX_Safari: { + exe: 'node_modules/.bin/browserstack-launch', + args: [ + '--os', + 'OS X', + '--osv', + 'Monterey', + '--b', + 'safari', + '--bv', + 'latest', // Will always be 15.x on Monterey + ...defaultArgs, + ], + protocol: 'browser', + }, + BS_MS_Edge: { + exe: 'node_modules/.bin/browserstack-launch', + args: ['--os', 'Windows', '--osv', '11', '--b', 'edge', '--bv', '115', ...defaultArgs], + protocol: 'browser', + }, + BS_IOS_SAFARI: { + exe: 'node_modules/.bin/browserstack-launch', + args: [ + '--real_mobile', + 'true', + '--os', + 'ios', + '--osv', + '16', + '--b', + 'iphone', + '--device', + 'iPhone 14 Pro', + ...defaultArgs, + ], + protocol: 'browser', + }, + BS_CHROME_ANDROID: { + exe: 'node_modules/.bin/browserstack-launch', + args: [ + '--real_mobile', + 'true', + '--os', + 'android', + '--osv', + '13.0', + '--b', + 'android', + '--device', + 'Google Pixel 7', + ...defaultArgs, + ], + protocol: 'browser', + }, +}; + +module.exports = { + test_page: 'tests/index.html?hidepassed&hideskipped&timeout=60000', + timeout: 1800, + reporter: FailureOnlyPerBrowserReporter, + browser_start_timeout: 2000, + browser_disconnect_timeout: 120, + parallel: 4, + disable_watching: true, + launchers: BrowserStackLaunchers, + launch_in_dev: [], + launch_in_ci: Object.keys(BrowserStackLaunchers), +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fb4d00b424..ac732aca38 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -745,6 +745,9 @@ importers: ember-cli-babel: specifier: ^8.2.0 version: 8.2.0(@babel/core@7.24.7) + ember-cli-browserstack: + specifier: ^3.0.0 + version: 3.0.0 ember-cli-clean-css: specifier: ^3.0.0 version: 3.0.0 @@ -859,6 +862,9 @@ importers: stylelint-scss: specifier: ^6.2.1 version: 6.3.2(stylelint@16.6.1) + testem-failure-only-reporter: + specifier: ^1.0.0 + version: 1.0.0(babel-core@6.26.3)(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.21)(underscore@1.13.6) tracked-built-ins: specifier: ^3.3.0 version: 3.3.0 @@ -961,6 +967,9 @@ importers: ember-cli-babel: specifier: ^8.2.0 version: 8.2.0(@babel/core@7.24.7) + ember-cli-browserstack: + specifier: ^3.0.0 + version: 3.0.0 ember-cli-clean-css: specifier: ^3.0.0 version: 3.0.0 @@ -1078,6 +1087,9 @@ importers: stylelint-scss: specifier: ^6.2.1 version: 6.3.2(stylelint@16.6.1) + testem-failure-only-reporter: + specifier: ^1.0.0 + version: 1.0.0(babel-core@6.26.3)(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.21)(underscore@1.13.6) tracked-built-ins: specifier: ^3.3.0 version: 3.3.0 @@ -2722,10 +2734,6 @@ packages: resolution: {integrity: sha512-LOnW7S0Gix9EES15dX4bnzXHHzPpAPU+RZy1oYbmFOzCSgEQ+b3PSTu+wMo0AQqpwWuCNB2xu23KUfB9rSnZdg==} engines: {node: '>=14'} - '@percy/sdk-utils@1.28.8': - resolution: {integrity: sha512-eqeIloD3OvHtPVUn08jDKt8m46oakKliEWDGliPdeWTtrfnoTJZtk8yNKe7jn8N3gzNYgU8iytwWFQV00zHBjQ==} - engines: {node: '>=14'} - '@percy/sdk-utils@1.28.9': resolution: {integrity: sha512-5Lq4ukqPiRe0/JtxpJvxpX3PuBkTZiFPiDIS/aIPlgVUenw94n8WIRSecrsAXprsUEcO0uUGrikXswyAwb5h0g==} engines: {node: '>=14'} @@ -2827,8 +2835,8 @@ packages: resolution: {integrity: sha512-VwiOk7TwXoE7NlNguV/aPq1hFH72tqkHCw8eWXbr2xHspRyyv9DLpLXhq+Ieje+NwoqXrY0xyQjPXdOE6cGcHA==} engines: {node: '>=16.0.0'} - '@smithy/core@2.2.4': - resolution: {integrity: sha512-qdY3LpMOUyLM/gfjjMQZui+UTNS7kBRDWlvyIhVOql5dn2J3isk9qUTBtQ1CbDH8MTugHis1zu3h4rH+Qmmh4g==} + '@smithy/core@2.2.5': + resolution: {integrity: sha512-0kqyj93/Aa30TEXnnWRBetN8fDGjFF+u8cdIiMI8YS6CrUF2dLTavRfHKfWh5cL5d6s2ZNyEnLjBitdcKmkETQ==} engines: {node: '>=16.0.0'} '@smithy/credential-provider-imds@3.1.3': @@ -2854,8 +2862,8 @@ packages: resolution: {integrity: sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A==} engines: {node: '>=16.0.0'} - '@smithy/fetch-http-handler@3.2.0': - resolution: {integrity: sha512-vFvDxMrc6sO5Atec8PaISckMcAwsCrRhYxwUylg97bRT2KZoumOF7qk5+6EVUtuM1IG9AJV5aqXnHln9ZdXHpg==} + '@smithy/fetch-http-handler@3.2.1': + resolution: {integrity: sha512-0w0bgUvZmfa0vHN8a+moByhCJT07WN6AHKEhFSOLsDpnszm+5dLVv5utGaqbhOrZ/aF5x3xuPMs/oMCd+4O5xg==} '@smithy/hash-blob-browser@3.1.2': resolution: {integrity: sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg==} @@ -2890,8 +2898,8 @@ packages: resolution: {integrity: sha512-whUJMEPwl3ANIbXjBXZVdJNgfV2ZU8ayln7xUM47rXL2txuenI7jQ/VFFwCzy5lCmXScjp6zYtptW5Evud8e9g==} engines: {node: '>=16.0.0'} - '@smithy/middleware-retry@3.0.7': - resolution: {integrity: sha512-f5q7Y09G+2h5ivkSx5CHvlAT4qRR3jBFEsfXyQ9nFNiWQlr8c48blnu5cmbTQ+p1xmIO14UXzKoF8d7Tm0Gsjw==} + '@smithy/middleware-retry@3.0.8': + resolution: {integrity: sha512-wmIw3t6ZbeqstUFdXtStzSSltoYrcfc28ndnr0mDSMmtMSRNduNbmneA7xiE224fVFXzbf24+0oREks1u2X7Mw==} engines: {node: '>=16.0.0'} '@smithy/middleware-serde@3.0.3': @@ -2906,8 +2914,8 @@ packages: resolution: {integrity: sha512-rxdpAZczzholz6CYZxtqDu/aKTxATD5DAUDVj7HoEulq+pDSQVWzbg0btZDlxeFfa6bb2b5tUvgdX5+k8jUqcg==} engines: {node: '>=16.0.0'} - '@smithy/node-http-handler@3.1.1': - resolution: {integrity: sha512-L71NLyPeP450r2J/mfu1jMc//Z1YnqJt2eSNw7uhiItaONnBLDA68J5jgxq8+MBDsYnFwNAIc7dBG1ImiWBiwg==} + '@smithy/node-http-handler@3.1.2': + resolution: {integrity: sha512-Td3rUNI7qqtoSLTsJBtsyfoG4cF/XMFmJr6Z2dX8QNzIi6tIW6YmuyFml8mJ2cNpyWNqITKbROMOFrvQjmsOvw==} engines: {node: '>=16.0.0'} '@smithy/property-provider@3.1.3': @@ -2938,8 +2946,8 @@ packages: resolution: {integrity: sha512-3BcPylEsYtD0esM4Hoyml/+s7WP2LFhcM3J2AGdcL2vx9O60TtfpDOL72gjb4lU8NeRPeKAwR77YNyyGvMbuEA==} engines: {node: '>=16.0.0'} - '@smithy/smithy-client@3.1.5': - resolution: {integrity: sha512-x9bL9Mx2CT2P1OiUlHM+ZNpbVU6TgT32f9CmTRzqIHA7M4vYrROCWEoC3o4xHNJASoGd4Opos3cXYPgh+/m4Ww==} + '@smithy/smithy-client@3.1.6': + resolution: {integrity: sha512-w9oboI661hfptr26houZ5mdKc//DMxkuOMXSaIiALqGn4bHYT9S4U69BBS6tHX4TZHgShmhcz0d6aXk7FY5soA==} engines: {node: '>=16.0.0'} '@smithy/types@3.3.0': @@ -2972,12 +2980,12 @@ packages: resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} engines: {node: '>=16.0.0'} - '@smithy/util-defaults-mode-browser@3.0.7': - resolution: {integrity: sha512-Q2txLyvQyGfmjsaDbVV7Sg8psefpFcrnlGapDzXGFRPFKRBeEg6OvFK8FljqjeHSaCZ6/UuzQExUPqBR/2qlDA==} + '@smithy/util-defaults-mode-browser@3.0.8': + resolution: {integrity: sha512-eLRHCvM1w3ZJkYcd60yKqM3d70dPB+071EDpf9ZGYqFed3xcm/+pWwNS/xM0JXRrjm0yAA19dWcdFN2IE/66pQ==} engines: {node: '>= 10.0.0'} - '@smithy/util-defaults-mode-node@3.0.7': - resolution: {integrity: sha512-F4Qcj1fG6MGi2BSWCslfsMSwllws/WzYONBGtLybyY+halAcXdWhcew+mej8M5SKd5hqPYp4f7b+ABQEaeytgg==} + '@smithy/util-defaults-mode-node@3.0.8': + resolution: {integrity: sha512-Tajvdyg5+k77j6AOrwSCZgi7KdBizqPNs3HCnFGRoxDjzh+CjPLaLrXbIRB0lsAmqYmRHIU34IogByaqvDrkBQ==} engines: {node: '>= 10.0.0'} '@smithy/util-endpoints@2.0.4': @@ -2996,8 +3004,8 @@ packages: resolution: {integrity: sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==} engines: {node: '>=16.0.0'} - '@smithy/util-stream@3.0.5': - resolution: {integrity: sha512-xC3L5PKMAT/Bh8fmHNXP9sdQ4+4aKVUU3EEJ2CF/lLk7R+wtMJM+v/1B4en7jO++Wa5spGzFDBCl0QxgbUc5Ug==} + '@smithy/util-stream@3.0.6': + resolution: {integrity: sha512-w9i//7egejAIvplX821rPWWgaiY1dxsQUw0hXX7qwa/uZ9U3zplqTQ871jWadkcVB9gFDhkPWYVZf4yfFbZ0xA==} engines: {node: '>=16.0.0'} '@smithy/util-uri-escape@3.0.0': @@ -3485,8 +3493,8 @@ packages: asn1.js@4.10.1: resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} - assert-never@1.2.1: - resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==} + assert-never@1.3.0: + resolution: {integrity: sha512-9Z3vxQ+berkL/JJo0dK+EY3Lp0s3NtSnP3VCLsh5HDcZPrh0M+KQRK5sWhUeyPPH+/RCxZqOxLMR+YC6vlviEQ==} assert@1.5.1: resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} @@ -5726,8 +5734,8 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -6607,8 +6615,8 @@ packages: resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} engines: {node: '>=8.0.0'} - inquirer@9.3.4: - resolution: {integrity: sha512-Hp6meNSDzp+Oc9JNUUlYsK81dxaPrrBRa7H/s3+yebCDRJe4UNKYSkEUZoIcuKJjNipBLPKsuc7BvO6tLzo/KA==} + inquirer@9.3.5: + resolution: {integrity: sha512-SVRCRovA7KaT6nqWB2mCNpTvU4cuZ0hOXo5KPyiyOcNNUIZwq/JKtvXuDJNaxfuJKabBYRu1ecHze0YEwDYoRQ==} engines: {node: '>=18'} intercept-stdout@0.1.2: @@ -7251,8 +7259,8 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lru-cache@10.3.1: - resolution: {integrity: sha512-9/8QXrtbGeMB6LxwQd4x1tIMnsmUxMvIH/qWGsccz6bt9Uln3S+sgAaqfQNhbGA8ufzs2fHuP/yqapGgP9Hh2g==} + lru-cache@10.4.0: + resolution: {integrity: sha512-bfJaPTuEiTYBu+ulDaeQ0F+uLmlfFkMgXj4cbwfuMSjgObGMzb55FMMbDvbRU0fAHZ4sLGkz2mKwcMg8Dvm8Ww==} engines: {node: '>=18'} lru-cache@5.1.1: @@ -9108,8 +9116,8 @@ packages: engines: {node: '>= 7.*'} hasBin: true - text-decoder@1.1.0: - resolution: {integrity: sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==} + text-decoder@1.1.1: + resolution: {integrity: sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==} text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -9840,26 +9848,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.609.0 '@aws-sdk/util-user-agent-node': 3.609.0 '@smithy/config-resolver': 3.0.4 - '@smithy/core': 2.2.4 - '@smithy/fetch-http-handler': 3.2.0 + '@smithy/core': 2.2.5 + '@smithy/fetch-http-handler': 3.2.1 '@smithy/hash-node': 3.0.3 '@smithy/invalid-dependency': 3.0.3 '@smithy/middleware-content-length': 3.0.3 '@smithy/middleware-endpoint': 3.0.4 - '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-retry': 3.0.8 '@smithy/middleware-serde': 3.0.3 '@smithy/middleware-stack': 3.0.3 '@smithy/node-config-provider': 3.1.3 - '@smithy/node-http-handler': 3.1.1 + '@smithy/node-http-handler': 3.1.2 '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.5 + '@smithy/smithy-client': 3.1.6 '@smithy/types': 3.3.0 '@smithy/url-parser': 3.0.3 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.7 - '@smithy/util-defaults-mode-node': 3.0.7 + '@smithy/util-defaults-mode-browser': 3.0.8 + '@smithy/util-defaults-mode-node': 3.0.8 '@smithy/util-endpoints': 2.0.4 '@smithy/util-middleware': 3.0.3 '@smithy/util-retry': 3.0.3 @@ -9896,11 +9904,11 @@ snapshots: '@aws-sdk/util-user-agent-node': 3.609.0 '@aws-sdk/xml-builder': 3.609.0 '@smithy/config-resolver': 3.0.4 - '@smithy/core': 2.2.4 + '@smithy/core': 2.2.5 '@smithy/eventstream-serde-browser': 3.0.4 '@smithy/eventstream-serde-config-resolver': 3.0.3 '@smithy/eventstream-serde-node': 3.0.4 - '@smithy/fetch-http-handler': 3.2.0 + '@smithy/fetch-http-handler': 3.2.1 '@smithy/hash-blob-browser': 3.1.2 '@smithy/hash-node': 3.0.3 '@smithy/hash-stream-node': 3.1.2 @@ -9908,23 +9916,23 @@ snapshots: '@smithy/md5-js': 3.0.3 '@smithy/middleware-content-length': 3.0.3 '@smithy/middleware-endpoint': 3.0.4 - '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-retry': 3.0.8 '@smithy/middleware-serde': 3.0.3 '@smithy/middleware-stack': 3.0.3 '@smithy/node-config-provider': 3.1.3 - '@smithy/node-http-handler': 3.1.1 + '@smithy/node-http-handler': 3.1.2 '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.5 + '@smithy/smithy-client': 3.1.6 '@smithy/types': 3.3.0 '@smithy/url-parser': 3.0.3 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.7 - '@smithy/util-defaults-mode-node': 3.0.7 + '@smithy/util-defaults-mode-browser': 3.0.8 + '@smithy/util-defaults-mode-node': 3.0.8 '@smithy/util-endpoints': 2.0.4 '@smithy/util-retry': 3.0.3 - '@smithy/util-stream': 3.0.5 + '@smithy/util-stream': 3.0.6 '@smithy/util-utf8': 3.0.0 '@smithy/util-waiter': 3.1.2 tslib: 2.6.3 @@ -9948,26 +9956,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.609.0 '@aws-sdk/util-user-agent-node': 3.609.0 '@smithy/config-resolver': 3.0.4 - '@smithy/core': 2.2.4 - '@smithy/fetch-http-handler': 3.2.0 + '@smithy/core': 2.2.5 + '@smithy/fetch-http-handler': 3.2.1 '@smithy/hash-node': 3.0.3 '@smithy/invalid-dependency': 3.0.3 '@smithy/middleware-content-length': 3.0.3 '@smithy/middleware-endpoint': 3.0.4 - '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-retry': 3.0.8 '@smithy/middleware-serde': 3.0.3 '@smithy/middleware-stack': 3.0.3 '@smithy/node-config-provider': 3.1.3 - '@smithy/node-http-handler': 3.1.1 + '@smithy/node-http-handler': 3.1.2 '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.5 + '@smithy/smithy-client': 3.1.6 '@smithy/types': 3.3.0 '@smithy/url-parser': 3.0.3 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.7 - '@smithy/util-defaults-mode-node': 3.0.7 + '@smithy/util-defaults-mode-browser': 3.0.8 + '@smithy/util-defaults-mode-node': 3.0.8 '@smithy/util-endpoints': 2.0.4 '@smithy/util-middleware': 3.0.3 '@smithy/util-retry': 3.0.3 @@ -9991,26 +9999,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.609.0 '@aws-sdk/util-user-agent-node': 3.609.0 '@smithy/config-resolver': 3.0.4 - '@smithy/core': 2.2.4 - '@smithy/fetch-http-handler': 3.2.0 + '@smithy/core': 2.2.5 + '@smithy/fetch-http-handler': 3.2.1 '@smithy/hash-node': 3.0.3 '@smithy/invalid-dependency': 3.0.3 '@smithy/middleware-content-length': 3.0.3 '@smithy/middleware-endpoint': 3.0.4 - '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-retry': 3.0.8 '@smithy/middleware-serde': 3.0.3 '@smithy/middleware-stack': 3.0.3 '@smithy/node-config-provider': 3.1.3 - '@smithy/node-http-handler': 3.1.1 + '@smithy/node-http-handler': 3.1.2 '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.5 + '@smithy/smithy-client': 3.1.6 '@smithy/types': 3.3.0 '@smithy/url-parser': 3.0.3 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.7 - '@smithy/util-defaults-mode-node': 3.0.7 + '@smithy/util-defaults-mode-browser': 3.0.8 + '@smithy/util-defaults-mode-node': 3.0.8 '@smithy/util-endpoints': 2.0.4 '@smithy/util-middleware': 3.0.3 '@smithy/util-retry': 3.0.3 @@ -10036,26 +10044,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.609.0 '@aws-sdk/util-user-agent-node': 3.609.0 '@smithy/config-resolver': 3.0.4 - '@smithy/core': 2.2.4 - '@smithy/fetch-http-handler': 3.2.0 + '@smithy/core': 2.2.5 + '@smithy/fetch-http-handler': 3.2.1 '@smithy/hash-node': 3.0.3 '@smithy/invalid-dependency': 3.0.3 '@smithy/middleware-content-length': 3.0.3 '@smithy/middleware-endpoint': 3.0.4 - '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-retry': 3.0.8 '@smithy/middleware-serde': 3.0.3 '@smithy/middleware-stack': 3.0.3 '@smithy/node-config-provider': 3.1.3 - '@smithy/node-http-handler': 3.1.1 + '@smithy/node-http-handler': 3.1.2 '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.5 + '@smithy/smithy-client': 3.1.6 '@smithy/types': 3.3.0 '@smithy/url-parser': 3.0.3 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.7 - '@smithy/util-defaults-mode-node': 3.0.7 + '@smithy/util-defaults-mode-browser': 3.0.8 + '@smithy/util-defaults-mode-node': 3.0.8 '@smithy/util-endpoints': 2.0.4 '@smithy/util-middleware': 3.0.3 '@smithy/util-retry': 3.0.3 @@ -10066,10 +10074,10 @@ snapshots: '@aws-sdk/core@3.609.0': dependencies: - '@smithy/core': 2.2.4 + '@smithy/core': 2.2.5 '@smithy/protocol-http': 4.0.3 '@smithy/signature-v4': 3.1.2 - '@smithy/smithy-client': 3.1.5 + '@smithy/smithy-client': 3.1.6 '@smithy/types': 3.3.0 fast-xml-parser: 4.2.5 tslib: 2.6.3 @@ -10094,13 +10102,13 @@ snapshots: '@aws-sdk/credential-provider-http@3.609.0': dependencies: '@aws-sdk/types': 3.609.0 - '@smithy/fetch-http-handler': 3.2.0 - '@smithy/node-http-handler': 3.1.1 + '@smithy/fetch-http-handler': 3.2.1 + '@smithy/node-http-handler': 3.1.2 '@smithy/property-provider': 3.1.3 '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.5 + '@smithy/smithy-client': 3.1.6 '@smithy/types': 3.3.0 - '@smithy/util-stream': 3.0.5 + '@smithy/util-stream': 3.0.6 tslib: 2.6.3 '@aws-sdk/credential-provider-ini@3.609.0(@aws-sdk/client-sso-oidc@3.609.0(@aws-sdk/client-sts@3.609.0))(@aws-sdk/client-sts@3.609.0)': @@ -10252,7 +10260,7 @@ snapshots: '@smithy/node-config-provider': 3.1.3 '@smithy/protocol-http': 4.0.3 '@smithy/signature-v4': 3.1.2 - '@smithy/smithy-client': 3.1.5 + '@smithy/smithy-client': 3.1.6 '@smithy/types': 3.3.0 '@smithy/util-config-provider': 3.0.0 tslib: 2.6.3 @@ -12091,7 +12099,7 @@ snapshots: '@embroider/macros': 1.16.5 '@types/babel__code-frame': 7.0.6 '@types/yargs': 17.0.32 - assert-never: 1.2.1 + assert-never: 1.3.0 babel-import-util: 2.1.1 babel-plugin-ember-template-compilation: 2.2.5 babel-plugin-syntax-dynamic-import: 6.18.0 @@ -12136,7 +12144,7 @@ snapshots: '@babel/traverse': 7.24.7(supports-color@8.1.1) '@embroider/macros': 1.16.5 '@embroider/shared-internals': 2.6.2(supports-color@8.1.1) - assert-never: 1.2.1 + assert-never: 1.3.0 babel-plugin-ember-template-compilation: 2.2.5 broccoli-node-api: 1.7.0 broccoli-persistent-filter: 3.1.3 @@ -12170,7 +12178,7 @@ snapshots: '@embroider/macros@1.16.5': dependencies: '@embroider/shared-internals': 2.6.2(supports-color@8.1.1) - assert-never: 1.2.1 + assert-never: 1.3.0 babel-import-util: 2.1.1 ember-cli-babel: 7.26.11 find-up: 5.0.0 @@ -12242,7 +12250,7 @@ snapshots: '@embroider/hbs-loader': 3.0.3(@embroider/core@3.4.14)(webpack@5.92.1) '@embroider/shared-internals': 2.6.2(supports-color@8.1.1) '@types/supports-color': 8.1.3 - assert-never: 1.2.1 + assert-never: 1.3.0 babel-loader: 8.3.0(@babel/core@7.24.7(supports-color@8.1.1))(webpack@5.92.1) css-loader: 5.2.7(webpack@5.92.1) csso: 4.2.0 @@ -12794,7 +12802,7 @@ snapshots: '@percy/ember@4.2.0': dependencies: - '@percy/sdk-utils': 1.28.8 + '@percy/sdk-utils': 1.28.9 ember-cli-babel: 7.26.11 transitivePeerDependencies: - supports-color @@ -12805,8 +12813,6 @@ snapshots: '@percy/logger@1.28.9': {} - '@percy/sdk-utils@1.28.8': {} - '@percy/sdk-utils@1.28.9': {} '@percy/webdriver-utils@1.28.9': @@ -12941,13 +12947,13 @@ snapshots: '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - '@smithy/core@2.2.4': + '@smithy/core@2.2.5': dependencies: '@smithy/middleware-endpoint': 3.0.4 - '@smithy/middleware-retry': 3.0.7 + '@smithy/middleware-retry': 3.0.8 '@smithy/middleware-serde': 3.0.3 '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.5 + '@smithy/smithy-client': 3.1.6 '@smithy/types': 3.3.0 '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 @@ -12990,7 +12996,7 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/fetch-http-handler@3.2.0': + '@smithy/fetch-http-handler@3.2.1': dependencies: '@smithy/protocol-http': 4.0.3 '@smithy/querystring-builder': 3.0.3 @@ -13053,12 +13059,12 @@ snapshots: '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - '@smithy/middleware-retry@3.0.7': + '@smithy/middleware-retry@3.0.8': dependencies: '@smithy/node-config-provider': 3.1.3 '@smithy/protocol-http': 4.0.3 '@smithy/service-error-classification': 3.0.3 - '@smithy/smithy-client': 3.1.5 + '@smithy/smithy-client': 3.1.6 '@smithy/types': 3.3.0 '@smithy/util-middleware': 3.0.3 '@smithy/util-retry': 3.0.3 @@ -13082,7 +13088,7 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/node-http-handler@3.1.1': + '@smithy/node-http-handler@3.1.2': dependencies: '@smithy/abort-controller': 3.1.1 '@smithy/protocol-http': 4.0.3 @@ -13130,13 +13136,13 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - '@smithy/smithy-client@3.1.5': + '@smithy/smithy-client@3.1.6': dependencies: '@smithy/middleware-endpoint': 3.0.4 '@smithy/middleware-stack': 3.0.3 '@smithy/protocol-http': 4.0.3 '@smithy/types': 3.3.0 - '@smithy/util-stream': 3.0.5 + '@smithy/util-stream': 3.0.6 tslib: 2.6.3 '@smithy/types@3.3.0': @@ -13177,21 +13183,21 @@ snapshots: dependencies: tslib: 2.6.3 - '@smithy/util-defaults-mode-browser@3.0.7': + '@smithy/util-defaults-mode-browser@3.0.8': dependencies: '@smithy/property-provider': 3.1.3 - '@smithy/smithy-client': 3.1.5 + '@smithy/smithy-client': 3.1.6 '@smithy/types': 3.3.0 bowser: 2.11.0 tslib: 2.6.3 - '@smithy/util-defaults-mode-node@3.0.7': + '@smithy/util-defaults-mode-node@3.0.8': dependencies: '@smithy/config-resolver': 3.0.4 '@smithy/credential-provider-imds': 3.1.3 '@smithy/node-config-provider': 3.1.3 '@smithy/property-provider': 3.1.3 - '@smithy/smithy-client': 3.1.5 + '@smithy/smithy-client': 3.1.6 '@smithy/types': 3.3.0 tslib: 2.6.3 @@ -13216,10 +13222,10 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/util-stream@3.0.5': + '@smithy/util-stream@3.0.6': dependencies: - '@smithy/fetch-http-handler': 3.2.0 - '@smithy/node-http-handler': 3.1.1 + '@smithy/fetch-http-handler': 3.2.1 + '@smithy/node-http-handler': 3.1.2 '@smithy/types': 3.3.0 '@smithy/util-base64': 3.0.0 '@smithy/util-buffer-from': 3.0.0 @@ -13774,7 +13780,7 @@ snapshots: inherits: 2.0.4 minimalistic-assert: 1.0.1 - assert-never@1.2.1: {} + assert-never@1.3.0: {} assert@1.5.1: dependencies: @@ -14782,7 +14788,7 @@ snapshots: buffer@4.9.2: dependencies: base64-js: 1.5.1 - ieee754: 1.2.1 + ieee754: 1.1.13 isarray: 1.0.0 buffer@5.7.1: @@ -16415,7 +16421,7 @@ snapshots: heimdalljs-logger: 0.1.10 http-proxy: 1.18.1 inflection: 2.0.1 - inquirer: 9.3.4 + inquirer: 9.3.5 is-git-url: 1.0.0 is-language-code: 3.1.0 isbinaryfile: 5.0.2 @@ -17312,7 +17318,7 @@ snapshots: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - esquery: 1.5.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -17348,7 +17354,7 @@ snapshots: esprima@4.0.1: {} - esquery@1.5.0: + esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -18491,7 +18497,7 @@ snapshots: strip-ansi: 6.0.1 through: 2.3.8 - inquirer@9.3.4: + inquirer@9.3.5: dependencies: '@inquirer/figures': 1.0.3 ansi-escapes: 4.3.2 @@ -19114,7 +19120,7 @@ snapshots: dependencies: tslib: 2.6.3 - lru-cache@10.3.1: {} + lru-cache@10.4.0: {} lru-cache@5.1.1: dependencies: @@ -19809,7 +19815,7 @@ snapshots: path-scurry@1.11.1: dependencies: - lru-cache: 10.3.1 + lru-cache: 10.4.0 minipass: 7.1.2 path-to-regexp@0.1.7: {} @@ -20840,7 +20846,7 @@ snapshots: dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 - text-decoder: 1.1.0 + text-decoder: 1.1.1 optionalDependencies: bare-events: 2.4.2 @@ -21342,7 +21348,7 @@ snapshots: - walrus - whiskers - text-decoder@1.1.0: + text-decoder@1.1.1: dependencies: b4a: 1.6.6