diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f4184f7e9..dfa788532 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,6 +15,9 @@ jobs: test: name: "Tests" runs-on: ubuntu-latest + timeout-minutes: 10 + env: + PERCY_TOKEN: web_fd6630a88fbe17df0319f50cf1ff005ba127bfea4c61fdd535c69275a648ec28 steps: - uses: actions/checkout@v4 @@ -29,11 +32,12 @@ jobs: - name: Lint run: pnpm run lint - name: Run Tests - run: pnpm run test:ember + run: pnpm percy exec -- pnpm run test:ember floating: name: "Floating Dependencies" runs-on: ubuntu-latest + timeout-minutes: 10 steps: - uses: actions/checkout@v4 @@ -50,6 +54,7 @@ jobs: try-scenarios: name: ${{ matrix.try-scenario }} runs-on: ubuntu-latest + timeout-minutes: 10 needs: "test" strategy: @@ -76,6 +81,7 @@ jobs: failing-try-scenarios: name: ${{ matrix.try-scenario }} Allowed to fail runs-on: ubuntu-latest + timeout-minutes: 10 needs: "test" permissions: diff --git a/package.json b/package.json index 4b1c0ab43..05eb94542 100644 --- a/package.json +++ b/package.json @@ -67,10 +67,13 @@ "@ember/jquery": "^1.1.0", "@ember/optional-features": "^2.0.0", "@ember/test-helpers": "^2.4.2", + "@embroider/macros": "^1.16.9", "@embroider/test-setup": "^0.43.5", "@faker-js/faker": "^9.0.3", "@glimmer/component": "^1.0.4", "@glimmer/tracking": "^1.0.4", + "@percy/cli": "^1.30.1", + "@percy/ember": "^4.2.0", "babel-eslint": "^10.1.0", "broccoli-asset-rev": "^3.0.0", "ember-cli": "~3.28.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 894b50489..5aef5ce0c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -105,6 +105,9 @@ importers: '@ember/test-helpers': specifier: ^2.4.2 version: 2.9.4(@babel/core@7.25.8)(ember-source@3.28.12(@babel/core@7.25.8)) + '@embroider/macros': + specifier: ^1.16.9 + version: 1.16.9 '@embroider/test-setup': specifier: ^0.43.5 version: 0.43.5 @@ -117,6 +120,12 @@ importers: '@glimmer/tracking': specifier: ^1.0.4 version: 1.1.2 + '@percy/cli': + specifier: ^1.30.1 + version: 1.30.1 + '@percy/ember': + specifier: ^4.2.0 + version: 4.2.0 babel-eslint: specifier: ^10.1.0 version: 10.1.0(eslint@7.32.0) @@ -1265,6 +1274,75 @@ packages: resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} engines: {node: '>= 10.0.0'} + '@percy/cli-app@1.30.1': + resolution: {integrity: sha512-/ZLGjAFeQKHeaQI5xQ9w6lLljEKWXB/+QuIHl3kGK+NL1+cZtRBk6oDbWj+QRKxg/tr+3zvwjioNIdkDaXgXUQ==} + engines: {node: '>=14'} + + '@percy/cli-build@1.30.1': + resolution: {integrity: sha512-jr9URjHjYKBchUy7I0eh2agGzpN5Ct+A/Q+jlUbkR5N7AyXW3FbkbA6ZiPYXuG+i2Sjm1wuxMGPKMSIKTVZ3GQ==} + engines: {node: '>=14'} + + '@percy/cli-command@1.30.1': + resolution: {integrity: sha512-a8qoZu4IaPp6cKse5ovruI6oeuXJQR2D2aJGwDpnaBbryX4ArSX+x0LoI59SfdEisUxf5JPjiSPmixTmWUxqxA==} + engines: {node: '>=14'} + hasBin: true + + '@percy/cli-config@1.30.1': + resolution: {integrity: sha512-Rgefm7jyYNdh86eEWj+TKeXhKC1+thlSzFQEraTaanhacBaVHDwEtd5x1hmRMQZPiI759cwVh+dFus3n8DwsaQ==} + engines: {node: '>=14'} + + '@percy/cli-exec@1.30.1': + resolution: {integrity: sha512-XsXzfXUIrpKo/3CmgffgVurLlVFlThCO+Kc5IV83ggJhdFAVoJc9cSLOgZyrTBsKEprHmWi5Wn4RLMXhxlaGVg==} + engines: {node: '>=14'} + + '@percy/cli-snapshot@1.30.1': + resolution: {integrity: sha512-86ahSoh3PgbM8ZAL38PVz4X6NMTKsyHTfnGf8T0KH9/MLLp2uokJPJTIpXkPq4OeqzNEq2eOHzaRuXf5wOeHtw==} + engines: {node: '>=14'} + + '@percy/cli-upload@1.30.1': + resolution: {integrity: sha512-wRR4yLI5tKGXz5Y6ZaufLRo2yKVGZVA4zZsYLTbQgmgPxnAYCc5/eu1C2cxfvgeCxNZqwmS6giqxMzfa5z9nKg==} + engines: {node: '>=14'} + + '@percy/cli@1.30.1': + resolution: {integrity: sha512-9mLD6q5nT106+Qxkkw28GVxcL2vgqG9mO6Tp55MeEjySSh+EBpadsCUh93oDN64ZcRUObAE56B+sy4H8PkBLGQ==} + engines: {node: '>=14'} + hasBin: true + + '@percy/client@1.30.1': + resolution: {integrity: sha512-vaue3/dOykOWZ9ER/vecb9mkcuTe72wgCrYbzIcKNtSUc5AQEGiV5c8rGZav868i5YCtGejexWZ7PKDO05asag==} + engines: {node: '>=14'} + + '@percy/config@1.30.1': + resolution: {integrity: sha512-wvI2QIf7/oLPsnrXGHFCLRdDY5BRFE3Smil8IY2ijtGUFWXRPsmRx2tjSdbZ/kpctkeyZappNHPzSiwi1MjJlA==} + engines: {node: '>=14'} + + '@percy/core@1.30.1': + resolution: {integrity: sha512-XQNPFO8ZmKWMMkWaa+IWN6Kzh7CXCwosLWK7OsEldK7N/CVNGmU8mkCwpqYlDXEeiahGfUxqCr4yHZS26OveyQ==} + engines: {node: '>=14'} + + '@percy/dom@1.30.1': + resolution: {integrity: sha512-dYHVGETIXzwqchShfzOkCrGCqjw/KLsubUZR3PYWd6UtTWZ9kFWr9I6MzizPE4XfhJs5rQ0e0Keb29FrGTey5Q==} + + '@percy/ember@4.2.0': + resolution: {integrity: sha512-D/WckDD2tQetdn8uq46nQA1rOVgov8jsZG4uN7snAq6SrOpxNxacONg37QPwczmICBc7o/NlipCAUteukmtKzg==} + engines: {node: '>= 14'} + + '@percy/env@1.30.1': + resolution: {integrity: sha512-ib9Ty/zo/+kfQSRC7RyzxnrS5zzsaoWJLgvTUDwi4iv/UIvx6vrEp7YPE0FQu1VGoRoL7zxRKalTh06/kBAsXg==} + engines: {node: '>=14'} + + '@percy/logger@1.30.1': + resolution: {integrity: sha512-FaVW4YGmgPaW0OviMFUn7m7ski2uZQAeUJ/hg+IXFIN+zSreX2ORcsp+Fep2p+h5UjcZX5wFuf/8O3nth5YAfQ==} + engines: {node: '>=14'} + + '@percy/sdk-utils@1.30.1': + resolution: {integrity: sha512-xdeaHEdQvytFEbNBYCFdu1ToD6T/BT6YtZYwfNKAYXwQqVbm4wr/3LVH+GUcxYZsBCxmeSyCrF4buspUhxTNJQ==} + engines: {node: '>=14'} + + '@percy/webdriver-utils@1.30.1': + resolution: {integrity: sha512-mXY40mUBLsdwFMKsZpg87K457a76Qi0Dq8+nZ0rLqYj5STZs3RQWbgi9qMI3ELoB3BqLzePqR9pL8J9WjvRXDg==} + engines: {node: '>=14'} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1406,6 +1484,9 @@ packages: '@types/symlink-or-copy@1.2.2': resolution: {integrity: sha512-MQ1AnmTLOncwEf9IVU+B2e4Hchrku5N67NkgcAHW0p3sdzPe0FNMANxEm6OJUzPniEQGkeT3OROLlCwZJLWFZA==} + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@webassemblyjs/ast@1.12.1': resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} @@ -2229,6 +2310,9 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -2770,6 +2854,15 @@ packages: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + create-ecdh@4.0.4: resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} @@ -3648,6 +3741,11 @@ packages: resolution: {integrity: sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ==} engines: {node: '>=8'} + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -3699,6 +3797,9 @@ packages: fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + figgy-pudding@3.5.2: resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==} deprecated: This module is no longer supported. @@ -4263,6 +4364,11 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + image-size@1.1.1: + resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + engines: {node: '>=16.x'} + hasBin: true + immutable@4.3.7: resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} @@ -4718,6 +4824,9 @@ packages: line-column@1.0.2: resolution: {integrity: sha512-Ktrjk5noGYlHsVnYWh62FLVs4hTb8A3e+vucNZMgPeAOITdshMSgv4cCZQeRDjm7+goqmo6+liZwTXo+U3sVww==} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + linkify-it@2.2.0: resolution: {integrity: sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==} @@ -5453,6 +5562,9 @@ packages: pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + parallel-transform@1.2.0: resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} @@ -5471,6 +5583,10 @@ packages: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + parse-passwd@1.0.0: resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} engines: {node: '>=0.10.0'} @@ -5542,6 +5658,9 @@ packages: path-to-regexp@0.1.10: resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + path-type@3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} engines: {node: '>=4'} @@ -5557,6 +5676,9 @@ packages: resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} engines: {node: '>=0.12'} + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -5771,6 +5893,9 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + quick-temp@0.1.8: resolution: {integrity: sha512-YsmIFfD9j2zaFwJkzI6eMG7y0lQP7YeWzgtFgNl38pGWZBSXJooZbOWwkcRot7Vt0Fg9L23pX0tqWU3VvLDsiA==} @@ -7112,6 +7237,11 @@ packages: resolution: {integrity: sha512-Hv9xxHtsJ9228wNhk03xnlDReUuWVvHwM4rIbjdAXYvHLs17xjuyF50N6XXFMN6N0omBaqgOok/MCK3At9fTAg==} engines: {node: ^4.5 || 6.* || >= 7.*} + yaml@2.6.0: + resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} + engines: {node: '>= 14'} + hasBin: true + yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -7128,6 +7258,9 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -8597,6 +8730,158 @@ snapshots: '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 + '@percy/cli-app@1.30.1': + dependencies: + '@percy/cli-command': 1.30.1 + '@percy/cli-exec': 1.30.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + + '@percy/cli-build@1.30.1': + dependencies: + '@percy/cli-command': 1.30.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + + '@percy/cli-command@1.30.1': + dependencies: + '@percy/config': 1.30.1 + '@percy/core': 1.30.1 + '@percy/logger': 1.30.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + + '@percy/cli-config@1.30.1': + dependencies: + '@percy/cli-command': 1.30.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + + '@percy/cli-exec@1.30.1': + dependencies: + '@percy/cli-command': 1.30.1 + '@percy/logger': 1.30.1 + cross-spawn: 7.0.3 + which: 2.0.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + + '@percy/cli-snapshot@1.30.1': + dependencies: + '@percy/cli-command': 1.30.1 + yaml: 2.6.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + + '@percy/cli-upload@1.30.1': + dependencies: + '@percy/cli-command': 1.30.1 + fast-glob: 3.3.2 + image-size: 1.1.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + + '@percy/cli@1.30.1': + dependencies: + '@percy/cli-app': 1.30.1 + '@percy/cli-build': 1.30.1 + '@percy/cli-command': 1.30.1 + '@percy/cli-config': 1.30.1 + '@percy/cli-exec': 1.30.1 + '@percy/cli-snapshot': 1.30.1 + '@percy/cli-upload': 1.30.1 + '@percy/client': 1.30.1 + '@percy/logger': 1.30.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + + '@percy/client@1.30.1': + dependencies: + '@percy/env': 1.30.1 + '@percy/logger': 1.30.1 + pako: 2.1.0 + + '@percy/config@1.30.1': + dependencies: + '@percy/logger': 1.30.1 + ajv: 8.17.1 + cosmiconfig: 8.3.6 + yaml: 2.6.0 + transitivePeerDependencies: + - typescript + + '@percy/core@1.30.1': + dependencies: + '@percy/client': 1.30.1 + '@percy/config': 1.30.1 + '@percy/dom': 1.30.1 + '@percy/logger': 1.30.1 + '@percy/webdriver-utils': 1.30.1 + content-disposition: 0.5.4 + cross-spawn: 7.0.3 + extract-zip: 2.0.1 + fast-glob: 3.3.2 + micromatch: 4.0.8 + mime-types: 2.1.35 + pako: 2.1.0 + path-to-regexp: 6.3.0 + rimraf: 3.0.2 + ws: 8.18.0 + yaml: 2.6.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + + '@percy/dom@1.30.1': {} + + '@percy/ember@4.2.0': + dependencies: + '@percy/sdk-utils': 1.30.1 + ember-cli-babel: 7.26.11 + transitivePeerDependencies: + - supports-color + + '@percy/env@1.30.1': + dependencies: + '@percy/logger': 1.30.1 + + '@percy/logger@1.30.1': {} + + '@percy/sdk-utils@1.30.1': {} + + '@percy/webdriver-utils@1.30.1': + dependencies: + '@percy/config': 1.30.1 + '@percy/sdk-utils': 1.30.1 + transitivePeerDependencies: + - typescript + '@pkgjs/parseargs@0.11.0': optional: true @@ -8752,6 +9037,11 @@ snapshots: '@types/symlink-or-copy@1.2.2': {} + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 22.7.6 + optional: true + '@webassemblyjs/ast@1.12.1': dependencies: '@webassemblyjs/helper-numbers': 1.11.6 @@ -10092,6 +10382,8 @@ snapshots: dependencies: node-int64: 0.4.0 + buffer-crc32@0.2.13: {} + buffer-from@1.1.2: {} buffer-xor@1.0.3: {} @@ -10556,6 +10848,13 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 + cosmiconfig@8.3.6: + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + create-ecdh@4.0.4: dependencies: bn.js: 4.12.0 @@ -12295,6 +12594,16 @@ snapshots: extract-stack@2.0.0: {} + extract-zip@2.0.1: + dependencies: + debug: 4.3.7 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} @@ -12388,6 +12697,10 @@ snapshots: dependencies: bser: 2.1.1 + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + figgy-pudding@3.5.2: {} figures@2.0.0: @@ -13112,6 +13425,10 @@ snapshots: ignore@5.3.2: {} + image-size@1.1.1: + dependencies: + queue: 6.0.2 + immutable@4.3.7: {} import-cwd@3.0.0: @@ -13563,6 +13880,8 @@ snapshots: isarray: 1.0.0 isobject: 2.1.0 + lines-and-columns@1.2.4: {} + linkify-it@2.2.0: dependencies: uc.micro: 1.0.6 @@ -14413,6 +14732,8 @@ snapshots: pako@1.0.11: {} + pako@2.1.0: {} + parallel-transform@1.2.0: dependencies: cyclist: 1.0.2 @@ -14439,6 +14760,13 @@ snapshots: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.25.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + parse-passwd@1.0.0: {} parse-static-imports@1.1.0: {} @@ -14487,6 +14815,8 @@ snapshots: path-to-regexp@0.1.10: {} + path-to-regexp@6.3.0: {} + path-type@3.0.0: dependencies: pify: 3.0.0 @@ -14503,6 +14833,8 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.11 + pend@1.2.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -14682,6 +15014,10 @@ snapshots: queue-microtask@1.2.3: {} + queue@6.0.2: + dependencies: + inherits: 2.0.4 + quick-temp@0.1.8: dependencies: mktemp: 0.4.0 @@ -16310,6 +16646,8 @@ snapshots: fs-extra: 4.0.3 lodash.merge: 4.6.2 + yaml@2.6.0: {} + yargs-parser@20.2.9: {} yargs-parser@21.1.1: {} @@ -16334,4 +16672,9 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + yocto-queue@0.1.0: {} diff --git a/tests/acceptance/catalog-test.js b/tests/acceptance/catalog-test.js new file mode 100644 index 000000000..629c28d8a --- /dev/null +++ b/tests/acceptance/catalog-test.js @@ -0,0 +1,16 @@ +import { module, test } from 'qunit'; +import { visit, currentURL } from '@ember/test-helpers'; +import { setupApplicationTest } from 'ember-qunit'; +import percySnapshot from '@percy/ember'; + +module('Acceptance | catalog', function (hooks) { + setupApplicationTest(hooks); + + test('visiting /catalog', async function (assert) { + await visit('/catalog'); + + assert.equal(currentURL(), '/catalog'); + + await percySnapshot('Catalog'); + }); +}); diff --git a/tests/dummy/app/controllers/catalog.js b/tests/dummy/app/controllers/catalog.js index 235bad15e..f1f59f355 100644 --- a/tests/dummy/app/controllers/catalog.js +++ b/tests/dummy/app/controllers/catalog.js @@ -6,6 +6,7 @@ import { inject as service } from '@ember/service'; import { faker } from '@faker-js/faker'; import { tracked } from '@glimmer/tracking'; import { buildGridModel } from '../utils/grid-list'; +import { isTesting } from '@embroider/macros'; export default class CatalogController extends Controller { // Autocomplete @@ -515,10 +516,12 @@ export default class CatalogController extends Controller { @tracked progressTimer = null; @tracked progressTimer2 = null; @action progressStart() { - this.progressDeterminateValue = 30; - this.progressDeterminateValue2 = 30; - this.progressSetupTimer(); - this.progressSetupTimer2(); + if (!isTesting()) { + this.progressDeterminateValue = 30; + this.progressDeterminateValue2 = 30; + this.progressSetupTimer(); + this.progressSetupTimer2(); + } } progressSetupTimer() { this.progressTimer = later( @@ -549,8 +552,10 @@ export default class CatalogController extends Controller { ); } @action progressStop() { - cancel(this.progressTimer); - cancel(this.progressTimer2); + if (!isTesting()) { + cancel(this.progressTimer); + cancel(this.progressTimer2); + } } // Select @@ -597,6 +602,7 @@ export default class CatalogController extends Controller { return this.router.currentRouteName; } - // Toast - toastDuration = 60000; + // Toast duration needs to be falsey so that we can take a snapshot with percy + // TODO we might be able to clean this up later when we remove use of `later()` in the codebase + toastDuration = false; } diff --git a/tests/dummy/app/controllers/demo/grid-list.js b/tests/dummy/app/controllers/demo/grid-list.js index 048bf8c7c..37c0d68b1 100644 --- a/tests/dummy/app/controllers/demo/grid-list.js +++ b/tests/dummy/app/controllers/demo/grid-list.js @@ -4,6 +4,7 @@ import { later } from '@ember/runloop'; import { A } from '@ember/array'; import EObject, { computed } from '@ember/object'; import { buildGridModel, randomColor, randomSpan } from '../../utils/grid-list'; +import { isTesting } from '@embroider/macros'; export default Controller.extend({ @@ -18,11 +19,14 @@ export default Controller.extend({ basicRows: 6, setupTimer() { - later(this, () => { - this.recalculateColorTiles(); + // this will cause test waiters to never complete in tests + if(!isTesting()) { + later(this, () => { + this.recalculateColorTiles(); - later(this, this.setupTimer); - }, 10 * 1000); + later(this, this.setupTimer); + }, 10 * 1000); + } }, tiles: computed(function() {