From bcb666fe28a031784c02e78fd9a24dba985425f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Tue, 13 Aug 2024 13:36:13 +0300 Subject: [PATCH 1/9] refactor: move `integration` to `test/cli` --- .github/workflows/integration-test-cli.yaml | 2 +- pnpm-lock.yaml | 603 +++++++++++++----- pnpm-workspace.yaml | 2 +- test/cli/README.md | 11 + {integration => test/cli}/package.json | 2 +- .../cli/test}/__snapshots__/npm-built.json | 0 .../cli/test}/__snapshots__/npm-created.json | 0 .../cli/test}/__snapshots__/pnpm-built.json | 0 .../cli/test}/__snapshots__/pnpm-created.json | 0 .../cli/test}/__snapshots__/yarn-built.json | 0 .../cli/test}/__snapshots__/yarn-created.json | 0 .../cli/test}/create-tutorial.test.ts | 2 +- 12 files changed, 472 insertions(+), 150 deletions(-) create mode 100644 test/cli/README.md rename {integration => test/cli}/package.json (83%) rename {integration/cli => test/cli/test}/__snapshots__/npm-built.json (100%) rename {integration/cli => test/cli/test}/__snapshots__/npm-created.json (100%) rename {integration/cli => test/cli/test}/__snapshots__/pnpm-built.json (100%) rename {integration/cli => test/cli/test}/__snapshots__/pnpm-created.json (100%) rename {integration/cli => test/cli/test}/__snapshots__/yarn-built.json (100%) rename {integration/cli => test/cli/test}/__snapshots__/yarn-created.json (100%) rename {integration/cli => test/cli/test}/create-tutorial.test.ts (97%) diff --git a/.github/workflows/integration-test-cli.yaml b/.github/workflows/integration-test-cli.yaml index 6580f027..09f40a99 100644 --- a/.github/workflows/integration-test-cli.yaml +++ b/.github/workflows/integration-test-cli.yaml @@ -23,5 +23,5 @@ jobs: run: pnpm build-release - name: Integration Tests - working-directory: ./integration + working-directory: ./test/cli run: pnpm test diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4911772c..b4b9da9f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,7 +83,7 @@ importers: version: 0.59.4 astro: specifier: ^4.12.0 - version: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) + version: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) fast-glob: specifier: ^3.3.2 version: 3.3.2 @@ -222,18 +222,6 @@ importers: specifier: 3.23.1 version: 3.23.1(zod@3.23.8) - integration: - dependencies: - execa: - specifier: ^9.2.0 - version: 9.2.0 - tempy: - specifier: ^3.1.0 - version: 3.1.0 - vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@20.14.11) - packages/astro: dependencies: '@astrojs/mdx': @@ -274,7 +262,7 @@ importers: version: 1.2.0 astro: specifier: ^4.12.0 - version: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) + version: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) astro-expressive-code: specifier: ^0.35.3 version: 0.35.3(astro@4.12.2) @@ -613,7 +601,7 @@ importers: version: 0.59.4 astro: specifier: ^4.12.0 - version: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) + version: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) fast-glob: specifier: ^3.3.2 version: 3.3.2 @@ -662,6 +650,75 @@ importers: specifier: ^1.6.0 version: 1.6.0(@types/node@20.14.11) + test/cli: + dependencies: + execa: + specifier: ^9.2.0 + version: 9.2.0 + tempy: + specifier: ^3.1.0 + version: 3.1.0 + vitest: + specifier: ^1.6.0 + version: 1.6.0(@types/node@20.14.11) + + test/ui: + devDependencies: + '@astrojs/react': + specifier: ^3.6.0 + version: 3.6.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(vite@5.3.4) + '@iconify-json/ph': + specifier: ^1.1.13 + version: 1.1.13 + '@iconify-json/svg-spinners': + specifier: ^1.1.2 + version: 1.1.2 + '@playwright/test': + specifier: ^1.46.0 + version: 1.46.0 + '@tutorialkit/astro': + specifier: workspace:* + version: link:../../packages/astro + '@tutorialkit/components-react': + specifier: workspace:* + version: link:../../packages/components/react + '@tutorialkit/runtime': + specifier: workspace:* + version: link:../../packages/runtime + '@tutorialkit/theme': + specifier: workspace:* + version: link:../../packages/theme + '@tutorialkit/types': + specifier: workspace:* + version: link:../../packages/types + '@types/node': + specifier: ^22.2.0 + version: 22.2.0 + '@unocss/reset': + specifier: ^0.59.4 + version: 0.59.4 + '@unocss/transformer-directives': + specifier: ^0.62.0 + version: 0.62.0 + astro: + specifier: ^4.12.0 + version: 4.12.2(@types/node@22.2.0)(typescript@5.5.3) + fast-glob: + specifier: ^3.3.2 + version: 3.3.2 + playwright: + specifier: ^1.46.0 + version: 1.46.0 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + unocss: + specifier: ^0.59.4 + version: 0.59.4(postcss@8.4.39)(vite@5.3.4) + packages: /@ampproject/remapping@2.3.0: @@ -795,7 +852,7 @@ packages: '@astrojs/markdown-remark': 5.1.0 '@mdx-js/mdx': 3.0.1 acorn: 8.12.0 - astro: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) + astro: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) es-module-lexer: 1.5.3 estree-util-visit: 2.0.0 github-slugger: 2.0.0 @@ -895,36 +952,10 @@ packages: '@babel/highlight': 7.24.7 picocolors: 1.0.1 - /@babel/compat-data@7.24.7: - resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} - engines: {node: '>=6.9.0'} - /@babel/compat-data@7.24.9: resolution: {integrity: sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==} engines: {node: '>=6.9.0'} - /@babel/core@7.24.7: - resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) - '@babel/helpers': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/template': 7.24.7 - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 - convert-source-map: 2.0.0 - debug: 4.3.5 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - /@babel/core@7.24.9: resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} engines: {node: '>=6.9.0'} @@ -979,17 +1010,7 @@ packages: resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.7 - - /@babel/helper-compilation-targets@7.24.7: - resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.24.7 - '@babel/helper-validator-option': 7.24.7 - browserslist: 4.23.1 - lru-cache: 5.1.1 - semver: 6.3.1 + '@babel/types': 7.24.9 /@babel/helper-compilation-targets@7.24.8: resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} @@ -1001,19 +1022,19 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.7): + /@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.9): resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.9 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-function-name': 7.24.7 '@babel/helper-member-expression-to-functions': 7.24.7 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.9) '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 '@babel/helper-split-export-declaration': 7.24.7 semver: 6.3.1 @@ -1024,20 +1045,20 @@ packages: resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.24.9 /@babel/helper-function-name@7.24.7: resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.24.9 /@babel/helper-hoist-variables@7.24.7: resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.24.9 /@babel/helper-member-expression-to-functions@7.24.7: resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} @@ -1052,18 +1073,18 @@ packages: resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color - /@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7): + /@babel/helper-module-transforms@7.24.7(@babel/core@7.24.9): resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.9 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 @@ -1097,13 +1118,13 @@ packages: resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} engines: {node: '>=6.9.0'} - /@babel/helper-replace-supers@7.24.7(@babel/core@7.24.7): + /@babel/helper-replace-supers@7.24.7(@babel/core@7.24.9): resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.9 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-member-expression-to-functions': 7.24.7 '@babel/helper-optimise-call-expression': 7.24.7 @@ -1114,8 +1135,8 @@ packages: resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color @@ -1132,7 +1153,7 @@ packages: resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.24.9 /@babel/helper-string-parser@7.24.7: resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} @@ -1146,21 +1167,10 @@ packages: resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.24.7: - resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} - engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.24.8: resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} - /@babel/helpers@7.24.7: - resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.24.7 - '@babel/types': 7.24.7 - /@babel/helpers@7.24.8: resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==} engines: {node: '>=6.9.0'} @@ -1183,6 +1193,7 @@ packages: hasBin: true dependencies: '@babel/types': 7.24.5 + dev: false /@babel/parser@7.24.7: resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} @@ -1196,16 +1207,7 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.24.5 - - /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7): - resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 + '@babel/types': 7.24.9 /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.9): resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} @@ -1216,44 +1218,44 @@ packages: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.7 - /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7): + /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.9): resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.7 - /@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.7): + /@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.9): resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.7 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/core': 7.24.9 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.7 '@babel/helper-simple-access': 7.24.7 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.7): + /@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.9): resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.7 - /@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.7): + /@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.9): resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.7 /@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.24.9): @@ -1271,32 +1273,32 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.7): + /@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.9): resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.9 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.9) transitivePeerDependencies: - supports-color - /@babel/preset-typescript@7.24.7(@babel/core@7.24.7): + /@babel/preset-typescript@7.24.7(@babel/core@7.24.9): resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-option': 7.24.7 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.9) transitivePeerDependencies: - supports-color @@ -1305,8 +1307,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 /@babel/traverse@7.24.5: resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} @@ -2521,6 +2523,9 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + /@jridgewell/trace-mapping@0.3.25: resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: @@ -2697,6 +2702,14 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dev: true + /@playwright/test@1.46.0: + resolution: {integrity: sha512-/QYft5VArOrGRP5pgkrfKksqsKA6CEFyGQ/gjNe6q0y4tZ1aaPfq4gIjudr1s3D+pXyrPRdsy4opKDrjBabE5w==} + engines: {node: '>=18'} + hasBin: true + dependencies: + playwright: 1.46.0 + dev: true + /@polka/url@1.0.0-next.25: resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} @@ -3136,8 +3149,8 @@ packages: /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.5 @@ -3145,18 +3158,18 @@ packages: /@types/babel__generator@7.6.8: resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.9 /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 /@types/babel__traverse@7.20.5: resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.9 /@types/conventional-commits-parser@5.0.0: resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} @@ -3243,6 +3256,12 @@ packages: dependencies: undici-types: 5.26.5 + /@types/node@22.2.0: + resolution: {integrity: sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==} + dependencies: + undici-types: 6.13.0 + dev: true + /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} dev: true @@ -3468,7 +3487,7 @@ packages: '@unocss/core': 0.59.4 '@unocss/reset': 0.59.4 '@unocss/vite': 0.59.4(vite@5.3.4) - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - rollup @@ -3503,6 +3522,10 @@ packages: /@unocss/core@0.59.4: resolution: {integrity: sha512-bBZ1sgcAtezQVZ1BST9IS3jqcsTLyqKNjiIf7FTnX3DHpfpYuMDFzSOtmkZDzBleOLO/CtcRWjT0HwTSQAmV0A==} + /@unocss/core@0.62.0: + resolution: {integrity: sha512-ion+7oHnaVaVMIKFonOPB1J8iune7xOU2uw6CdJK+Kbf+1f0ET8aNCZ9UxJ02+/DDd+6e6ax6+9XrAj4J+XDCA==} + dev: true + /@unocss/extractor-arbitrary-variants@0.59.4: resolution: {integrity: sha512-RDe4FgMGJQ+tp9GLvhPHni7Cc2O0lHBRMElVlN8LoXJAdODMICdbrEPGJlEfrc+7x/QgVFoR895KpYJh3hIgGA==} dependencies: @@ -3593,15 +3616,23 @@ packages: '@unocss/core': 0.59.4 magic-string: 0.30.10 + /@unocss/rule-utils@0.62.0: + resolution: {integrity: sha512-2uL+sKoMEHRlkMH1aLAxQwC1tc9A7nEkJ6RwfJfDTs/8oIlHPALJUsaz69qESRWLMsafBHJ8nLuaPRgkTVRiRw==} + engines: {node: '>=14'} + dependencies: + '@unocss/core': 0.62.0 + magic-string: 0.30.11 + dev: true + /@unocss/scope@0.59.4: resolution: {integrity: sha512-wBQJ39kw4Tfj4km7AoGvSIobPKVnRZVsgc0bema5Y0PL3g1NeVQ/LopBI2zEJWdpxGXUWxSDsXm7BZo6qVlD/A==} /@unocss/transformer-attributify-jsx-babel@0.59.4: resolution: {integrity: sha512-xtCRSgeTaDBiNJLVX7oOSFe63JiFB5nrdK23PHn3IlZM9O7Bxx4ZxI3MQJtFZFQNE+INFko+DVyY1WiFEm1p/Q==} dependencies: - '@babel/core': 7.24.7 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) - '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) + '@babel/core': 7.24.9 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) + '@babel/preset-typescript': 7.24.7(@babel/core@7.24.9) '@unocss/core': 0.59.4 transitivePeerDependencies: - supports-color @@ -3623,6 +3654,14 @@ packages: '@unocss/rule-utils': 0.59.4 css-tree: 2.3.1 + /@unocss/transformer-directives@0.62.0: + resolution: {integrity: sha512-uJw51mit0kbXnm5WYcLbKmItGA9kWkhXwS8nx1EY47bpz472ha72LURyNeGCnIHXngEETd0/oZ++BgsEqP7tYg==} + dependencies: + '@unocss/core': 0.62.0 + '@unocss/rule-utils': 0.62.0 + css-tree: 2.3.1 + dev: true + /@unocss/transformer-variant-group@0.59.4: resolution: {integrity: sha512-9XLixxn1NRgP62Kj4R/NC/rpqhql5F2s6ulJ8CAMTEbd/NylVhEANluPGDVUGcLJ4cj6E02hFa8C1PLGSm7/xw==} dependencies: @@ -3642,8 +3681,8 @@ packages: '@unocss/transformer-directives': 0.59.4 chokidar: 3.6.0 fast-glob: 3.3.2 - magic-string: 0.30.10 - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + magic-string: 0.30.11 + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - rollup @@ -3653,12 +3692,12 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 dependencies: - '@babel/core': 7.24.7 - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) + '@babel/core': 7.24.9 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - supports-color @@ -3872,7 +3911,7 @@ packages: resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} engines: {node: '>=0.4.0'} dependencies: - acorn: 8.12.0 + acorn: 8.12.1 /acorn@8.12.0: resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} @@ -4009,7 +4048,7 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^3.3.0 dependencies: - astro: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) + astro: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) rehype-expressive-code: 0.35.3 /astro@4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3): @@ -4057,7 +4096,7 @@ packages: http-cache-semantics: 4.1.1 js-yaml: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.10 + magic-string: 0.30.11 mrmime: 2.0.0 ora: 8.0.1 p-limit: 6.1.0 @@ -4091,6 +4130,168 @@ packages: - supports-color - terser - typescript + dev: true + + /astro@4.12.2(@types/node@20.14.11)(typescript@5.5.3): + resolution: {integrity: sha512-l6OmqlL+FiuSi9x6F+EGZitteOznq1JffOil7st7cdqeMCTEIym4oagI1a6zp6QekliKWEEZWdplGhgh1k1f7Q==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + dependencies: + '@astrojs/compiler': 2.9.1 + '@astrojs/internal-helpers': 0.4.1 + '@astrojs/markdown-remark': 5.2.0 + '@astrojs/telemetry': 3.1.0 + '@babel/core': 7.24.9 + '@babel/generator': 7.24.10 + '@babel/parser': 7.24.8 + '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.24.9) + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + '@types/babel__core': 7.20.5 + '@types/cookie': 0.6.0 + acorn: 8.12.1 + aria-query: 5.3.0 + axobject-query: 4.1.0 + boxen: 7.1.1 + chokidar: 3.6.0 + ci-info: 4.0.0 + clsx: 2.1.1 + common-ancestor-path: 1.0.1 + cookie: 0.6.0 + cssesc: 3.0.0 + debug: 4.3.5 + deterministic-object-hash: 2.0.2 + devalue: 5.0.0 + diff: 5.2.0 + dlv: 1.1.3 + dset: 3.1.3 + es-module-lexer: 1.5.4 + esbuild: 0.21.5 + estree-walker: 3.0.3 + execa: 8.0.1 + fast-glob: 3.3.2 + flattie: 1.1.1 + github-slugger: 2.0.0 + gray-matter: 4.0.3 + html-escaper: 3.0.3 + http-cache-semantics: 4.1.1 + js-yaml: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.10 + mrmime: 2.0.0 + ora: 8.0.1 + p-limit: 6.1.0 + p-queue: 8.0.1 + path-to-regexp: 6.2.2 + preferred-pm: 4.0.0 + prompts: 2.4.2 + rehype: 13.0.1 + semver: 7.6.2 + shiki: 1.11.0 + string-width: 7.2.0 + strip-ansi: 7.1.0 + tsconfck: 3.1.1(typescript@5.5.3) + unist-util-visit: 5.0.0 + vfile: 6.0.2 + vite: 5.3.4(@types/node@20.14.11) + vitefu: 0.2.5(vite@5.3.4) + which-pm: 3.0.0 + yargs-parser: 21.1.1 + zod: 3.23.8 + zod-to-json-schema: 3.23.1(zod@3.23.8) + optionalDependencies: + sharp: 0.33.4 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - typescript + + /astro@4.12.2(@types/node@22.2.0)(typescript@5.5.3): + resolution: {integrity: sha512-l6OmqlL+FiuSi9x6F+EGZitteOznq1JffOil7st7cdqeMCTEIym4oagI1a6zp6QekliKWEEZWdplGhgh1k1f7Q==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + dependencies: + '@astrojs/compiler': 2.9.1 + '@astrojs/internal-helpers': 0.4.1 + '@astrojs/markdown-remark': 5.2.0 + '@astrojs/telemetry': 3.1.0 + '@babel/core': 7.24.9 + '@babel/generator': 7.24.10 + '@babel/parser': 7.24.8 + '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.24.9) + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + '@types/babel__core': 7.20.5 + '@types/cookie': 0.6.0 + acorn: 8.12.1 + aria-query: 5.3.0 + axobject-query: 4.1.0 + boxen: 7.1.1 + chokidar: 3.6.0 + ci-info: 4.0.0 + clsx: 2.1.1 + common-ancestor-path: 1.0.1 + cookie: 0.6.0 + cssesc: 3.0.0 + debug: 4.3.5 + deterministic-object-hash: 2.0.2 + devalue: 5.0.0 + diff: 5.2.0 + dlv: 1.1.3 + dset: 3.1.3 + es-module-lexer: 1.5.4 + esbuild: 0.21.5 + estree-walker: 3.0.3 + execa: 8.0.1 + fast-glob: 3.3.2 + flattie: 1.1.1 + github-slugger: 2.0.0 + gray-matter: 4.0.3 + html-escaper: 3.0.3 + http-cache-semantics: 4.1.1 + js-yaml: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.11 + mrmime: 2.0.0 + ora: 8.0.1 + p-limit: 6.1.0 + p-queue: 8.0.1 + path-to-regexp: 6.2.2 + preferred-pm: 4.0.0 + prompts: 2.4.2 + rehype: 13.0.1 + semver: 7.6.2 + shiki: 1.11.0 + string-width: 7.2.0 + strip-ansi: 7.1.0 + tsconfck: 3.1.1(typescript@5.5.3) + unist-util-visit: 5.0.0 + vfile: 6.0.2 + vite: 5.3.4(@types/node@22.2.0) + vitefu: 0.2.5(vite@5.3.4) + which-pm: 3.0.0 + yargs-parser: 21.1.1 + zod: 3.23.8 + zod-to-json-schema: 3.23.1(zod@3.23.8) + optionalDependencies: + sharp: 0.33.4 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - typescript + dev: true /astrojs-compiler-sync@1.0.0(@astrojs/compiler@2.9.1): resolution: {integrity: sha512-IM6FxpMoBxkGGdKppkFHNQIC9Wge7jspG2MIJff8DOhG41USNJLxJfxRm7wnkTKWlYK5Y1YFFNYr2vUUKkI8sw==} @@ -4398,6 +4599,7 @@ packages: /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + requiresBuild: true dependencies: color-name: 1.1.4 @@ -5386,6 +5588,14 @@ packages: universalify: 2.0.1 dev: true + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -5584,7 +5794,7 @@ packages: devlop: 1.1.0 hast-util-from-parse5: 8.0.1 parse5: 7.1.2 - vfile: 6.0.1 + vfile: 6.0.2 vfile-message: 4.0.2 /hast-util-from-parse5@8.0.1: @@ -5595,7 +5805,7 @@ packages: devlop: 1.1.0 hastscript: 8.0.0 property-information: 6.5.0 - vfile: 6.0.1 + vfile: 6.0.2 vfile-location: 5.0.2 web-namespaces: 2.0.1 @@ -5643,7 +5853,7 @@ packages: parse5: 7.1.2 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.1 + vfile: 6.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -5821,6 +6031,7 @@ packages: /immutable@4.3.6: resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} + dev: true /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -6239,6 +6450,11 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + /markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -6427,7 +6643,7 @@ packages: trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.1 + vfile: 6.0.2 /mdast-util-to-markdown@2.1.0: resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} @@ -6828,7 +7044,7 @@ packages: /mlly@1.7.1: resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} dependencies: - acorn: 8.12.0 + acorn: 8.12.1 pathe: 1.1.2 pkg-types: 1.1.1 ufo: 1.5.3 @@ -7011,7 +7227,7 @@ packages: resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} engines: {node: '>=18'} dependencies: - yocto-queue: 1.0.0 + yocto-queue: 1.1.1 /p-limit@6.1.0: resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} @@ -7117,7 +7333,7 @@ packages: nlcst-to-string: 4.0.0 unist-util-modify-children: 4.0.0 unist-util-visit-children: 3.0.0 - vfile: 6.0.1 + vfile: 6.0.2 /parse-ms@4.0.0: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} @@ -7201,6 +7417,22 @@ packages: mlly: 1.7.1 pathe: 1.1.2 + /playwright-core@1.46.0: + resolution: {integrity: sha512-9Y/d5UIwuJk8t3+lhmMSAJyNP1BUC/DqP3cQJDQQL/oWqAiuPTLgy7Q5dzglmTLwcBRdetzgNM/gni7ckfTr6A==} + engines: {node: '>=18'} + hasBin: true + dev: true + + /playwright@1.46.0: + resolution: {integrity: sha512-XYJ5WvfefWONh1uPAUAi0H2xXV5S3vrtcnXe6uAOgdGi3aSpqOSXX08IAjXW34xitfuOJsvXU5anXZxPSEQiJw==} + engines: {node: '>=18'} + hasBin: true + dependencies: + playwright-core: 1.46.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /postcss-nested@6.0.1(postcss@8.4.39): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} @@ -7450,7 +7682,7 @@ packages: dependencies: '@types/hast': 3.0.4 hast-util-raw: 9.0.4 - vfile: 6.0.1 + vfile: 6.0.2 /rehype-stringify@10.0.0: resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} @@ -7514,7 +7746,7 @@ packages: '@types/mdast': 4.0.4 mdast-util-to-hast: 13.2.0 unified: 11.0.5 - vfile: 6.0.1 + vfile: 6.0.2 /remark-smartypants@2.1.0: resolution: {integrity: sha512-qoF6Vz3BjU2tP6OfZqHOvCU0ACmu/6jhGaINSQRI9mM7wCxNQTKB3JUAN4SVoN2ybElEDTxBIABRep7e569iJw==} @@ -7703,6 +7935,7 @@ packages: chokidar: 3.6.0 immutable: 4.3.6 source-map-js: 1.2.0 + dev: true /sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} @@ -8221,6 +8454,7 @@ packages: /tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + requiresBuild: true /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -8309,6 +8543,10 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /undici-types@6.13.0: + resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==} + dev: true + /unherit@3.0.1: resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==} @@ -8337,7 +8575,7 @@ packages: extend: 3.0.2 is-plain-obj: 4.1.0 trough: 2.2.0 - vfile: 6.0.1 + vfile: 6.0.2 /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} @@ -8472,7 +8710,7 @@ packages: '@unocss/transformer-directives': 0.59.4 '@unocss/transformer-variant-group': 0.59.4 '@unocss/vite': 0.59.4(vite@5.3.4) - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - postcss - rollup @@ -8507,7 +8745,7 @@ packages: resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} dependencies: '@types/unist': 3.0.2 - vfile: 6.0.1 + vfile: 6.0.2 /vfile-message@3.1.4: resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} @@ -8552,7 +8790,7 @@ packages: debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - '@types/node' - less @@ -8582,7 +8820,7 @@ packages: perfect-debounce: 1.0.0 picocolors: 1.0.1 sirv: 2.0.4 - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - rollup - supports-color @@ -8599,12 +8837,47 @@ packages: debug: 4.3.5 globrex: 0.1.2 tsconfck: 3.1.0(typescript@5.5.3) - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - supports-color - typescript dev: true + /vite@5.3.4(@types/node@20.14.11): + resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.14.11 + esbuild: 0.21.5 + postcss: 8.4.39 + rollup: 4.18.1 + optionalDependencies: + fsevents: 2.3.3 + /vite@5.3.4(@types/node@20.14.11)(sass@1.77.6): resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -8640,6 +8913,43 @@ packages: sass: 1.77.6 optionalDependencies: fsevents: 2.3.3 + dev: true + + /vite@5.3.4(@types/node@22.2.0): + resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 22.2.0 + esbuild: 0.21.5 + postcss: 8.4.39 + rollup: 4.18.1 + optionalDependencies: + fsevents: 2.3.3 + dev: true /vitefu@0.2.5(vite@5.3.4): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} @@ -8649,7 +8959,7 @@ packages: vite: optional: true dependencies: - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) /vitest@1.6.0(@types/node@20.14.11): resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} @@ -8694,7 +9004,7 @@ packages: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) vite-node: 1.6.0(@types/node@20.14.11) why-is-node-running: 2.2.2 transitivePeerDependencies: @@ -9030,6 +9340,7 @@ packages: /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} + dev: true /yocto-queue@1.1.1: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index de54ed4f..53f0e02b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,6 @@ packages: - 'packages/*' - 'packages/components/*' + - 'test/*' - 'docs/*' - 'extensions/*' - - 'integration' diff --git a/test/cli/README.md b/test/cli/README.md new file mode 100644 index 00000000..b5a8bf62 --- /dev/null +++ b/test/cli/README.md @@ -0,0 +1,11 @@ +# CLI Tests + +> Tests for verifying `@tutorialkit/cli` works with the actual built template, including their package manager lockfiles. + +## Running + +- `cd ` +- `pnpm cli:build-release` +- `cd test/cli` +- `pnpm test` + diff --git a/integration/package.json b/test/cli/package.json similarity index 83% rename from integration/package.json rename to test/cli/package.json index 16409ebd..0a1f9cae 100644 --- a/integration/package.json +++ b/test/cli/package.json @@ -1,5 +1,5 @@ { - "name": "tutorialkit-integration", + "name": "@tutorialkit-cli/test-cli", "private": true, "type": "module", "scripts": { diff --git a/integration/cli/__snapshots__/npm-built.json b/test/cli/test/__snapshots__/npm-built.json similarity index 100% rename from integration/cli/__snapshots__/npm-built.json rename to test/cli/test/__snapshots__/npm-built.json diff --git a/integration/cli/__snapshots__/npm-created.json b/test/cli/test/__snapshots__/npm-created.json similarity index 100% rename from integration/cli/__snapshots__/npm-created.json rename to test/cli/test/__snapshots__/npm-created.json diff --git a/integration/cli/__snapshots__/pnpm-built.json b/test/cli/test/__snapshots__/pnpm-built.json similarity index 100% rename from integration/cli/__snapshots__/pnpm-built.json rename to test/cli/test/__snapshots__/pnpm-built.json diff --git a/integration/cli/__snapshots__/pnpm-created.json b/test/cli/test/__snapshots__/pnpm-created.json similarity index 100% rename from integration/cli/__snapshots__/pnpm-created.json rename to test/cli/test/__snapshots__/pnpm-created.json diff --git a/integration/cli/__snapshots__/yarn-built.json b/test/cli/test/__snapshots__/yarn-built.json similarity index 100% rename from integration/cli/__snapshots__/yarn-built.json rename to test/cli/test/__snapshots__/yarn-built.json diff --git a/integration/cli/__snapshots__/yarn-created.json b/test/cli/test/__snapshots__/yarn-created.json similarity index 100% rename from integration/cli/__snapshots__/yarn-created.json rename to test/cli/test/__snapshots__/yarn-created.json diff --git a/integration/cli/create-tutorial.test.ts b/test/cli/test/create-tutorial.test.ts similarity index 97% rename from integration/cli/create-tutorial.test.ts rename to test/cli/test/create-tutorial.test.ts index 32c058aa..4b1f4757 100644 --- a/integration/cli/create-tutorial.test.ts +++ b/test/cli/test/create-tutorial.test.ts @@ -4,7 +4,7 @@ import { describe, beforeEach, afterAll, expect, it } from 'vitest'; import { execa } from 'execa'; import { temporaryDirectory } from 'tempy'; -const baseDir = path.resolve(__dirname, '../..'); +const baseDir = path.resolve(__dirname, '../../..'); const cli = path.join(baseDir, 'packages/cli/dist/index.js'); From 9e72229efa226ccb111f3132538c035b201ac925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Thu, 15 Aug 2024 11:58:49 +0300 Subject: [PATCH 2/9] test: add `test/ui` --- .github/workflows/ci.yaml | 3 + .gitignore | 2 + .npmrc | 1 + package.json | 5 +- pnpm-lock.yaml | 3 + test/ui/README.md | 42 +++++++++++++ test/ui/astro.config.ts | 23 ++++++++ test/ui/package.json | 32 ++++++++++ test/ui/playwright.config.ts | 17 ++++++ test/ui/public/logo.svg | 1 + test/ui/src/content/config.ts | 9 +++ test/ui/src/content/tutorial/meta.md | 5 ++ .../lesson-and-solution/_files/example.html | 8 +++ .../lesson-and-solution/_files/example.js | 1 + .../_solution/example.html | 8 +++ .../lesson-and-solution/_solution/example.js | 1 + .../file-tree/lesson-and-solution/content.md | 6 ++ .../content/tutorial/tests/file-tree/meta.md | 4 ++ .../file-tree/no-solution/_files/example.html | 8 +++ .../file-tree/no-solution/_files/example.js | 1 + .../tests/file-tree/no-solution/content.md | 6 ++ test/ui/src/content/tutorial/tests/meta.md | 4 ++ .../content/tutorial/tests/navigation/meta.md | 10 ++++ .../tests/navigation/page-one/content.md | 6 ++ .../tests/navigation/page-three/content.md | 6 ++ .../tests/navigation/page-two/content.md | 6 ++ .../content/tutorial/tests/preview/meta.md | 5 ++ .../tests/preview/multiple/content.md | 9 +++ .../tutorial/tests/preview/single/content.md | 8 +++ test/ui/src/env.d.ts | 3 + test/ui/src/templates/default/about.html | 14 +++++ test/ui/src/templates/default/index.html | 14 +++++ test/ui/src/templates/default/index.mjs | 23 ++++++++ test/ui/src/templates/default/package.json | 9 +++ test/ui/test/file-tree.test.ts | 59 +++++++++++++++++++ test/ui/test/navigation.test.ts | 30 ++++++++++ test/ui/test/preview.test.ts | 27 +++++++++ test/ui/test/utils.ts | 33 +++++++++++ test/ui/uno.config.ts | 47 +++++++++++++++ 39 files changed, 497 insertions(+), 2 deletions(-) create mode 100644 .npmrc create mode 100644 test/ui/README.md create mode 100644 test/ui/astro.config.ts create mode 100644 test/ui/package.json create mode 100644 test/ui/playwright.config.ts create mode 100644 test/ui/public/logo.svg create mode 100644 test/ui/src/content/config.ts create mode 100644 test/ui/src/content/tutorial/meta.md create mode 100644 test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.html create mode 100644 test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.js create mode 100644 test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.html create mode 100644 test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.js create mode 100644 test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/content.md create mode 100644 test/ui/src/content/tutorial/tests/file-tree/meta.md create mode 100644 test/ui/src/content/tutorial/tests/file-tree/no-solution/_files/example.html create mode 100644 test/ui/src/content/tutorial/tests/file-tree/no-solution/_files/example.js create mode 100644 test/ui/src/content/tutorial/tests/file-tree/no-solution/content.md create mode 100644 test/ui/src/content/tutorial/tests/meta.md create mode 100644 test/ui/src/content/tutorial/tests/navigation/meta.md create mode 100644 test/ui/src/content/tutorial/tests/navigation/page-one/content.md create mode 100644 test/ui/src/content/tutorial/tests/navigation/page-three/content.md create mode 100644 test/ui/src/content/tutorial/tests/navigation/page-two/content.md create mode 100644 test/ui/src/content/tutorial/tests/preview/meta.md create mode 100644 test/ui/src/content/tutorial/tests/preview/multiple/content.md create mode 100644 test/ui/src/content/tutorial/tests/preview/single/content.md create mode 100644 test/ui/src/env.d.ts create mode 100644 test/ui/src/templates/default/about.html create mode 100644 test/ui/src/templates/default/index.html create mode 100644 test/ui/src/templates/default/index.mjs create mode 100644 test/ui/src/templates/default/package.json create mode 100644 test/ui/test/file-tree.test.ts create mode 100644 test/ui/test/navigation.test.ts create mode 100644 test/ui/test/preview.test.ts create mode 100644 test/ui/test/utils.ts create mode 100644 test/ui/uno.config.ts diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c00ef21b..906958dc 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -32,6 +32,9 @@ jobs: - name: Lint run: pnpm lint + - name: Install Playwright Dependencies + run: pnpm exec playwright install chromium --with-deps + - name: Test run: pnpm test diff --git a/.gitignore b/.gitignore index 592c9c08..8cf039c0 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,5 @@ tsconfig.tsbuildinfo tsconfig.build.tsbuildinfo .tmp .tmp-* +/test/**/test-results +/test/**/.astro diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..3bd3b7de --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +shell-emulator=true diff --git a/package.json b/package.json index 049bfb39..5bfafe2d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "scripts": { - "build": "pnpm run --stream --filter=@tutorialkit/* --filter=create-tutorial build", + "build": "pnpm run --stream --filter='@tutorialkit/*' --filter=create-tutorial build", "dev": "TUTORIALKIT_DEV=true pnpm -r --parallel --stream --filter='./packages/**' run dev", "changelog": "./scripts/changelog.mjs", "clean": "./scripts/clean.sh", @@ -16,7 +16,7 @@ "demo": "pnpm run --filter=demo.tutorialkit.dev dev", "demo:build": "pnpm run build && pnpm run --filter=demo.tutorialkit.dev build", "lint": "eslint \"{packages,docs,extensions,integration}/**/*\"", - "test": "pnpm run --stream --filter=@tutorialkit/* test --run" + "test": "CI=true pnpm run --stream --filter='@tutorialkit/*' test" }, "license": "MIT", "packageManager": "pnpm@8.15.6", @@ -30,6 +30,7 @@ "eslint-plugin-astro": "^1.2.3", "husky": "^9.0.11", "is-ci": "^3.0.1", + "playwright": "^1.46.0", "prettier": "^3.3.2", "prettier-plugin-astro": "^0.14.1", "tempfile": "^5.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b4b9da9f..cd926578 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,9 @@ importers: is-ci: specifier: ^3.0.1 version: 3.0.1 + playwright: + specifier: ^1.46.0 + version: 1.46.0 prettier: specifier: ^3.3.2 version: 3.3.2 diff --git a/test/ui/README.md b/test/ui/README.md new file mode 100644 index 00000000..b103c7be --- /dev/null +++ b/test/ui/README.md @@ -0,0 +1,42 @@ +# UI Tests + +> Tests for verifying TutorialKit works as expected in the browser. Tests are run against locally linked `@tutorialkit` packages. + +## Running + +- `pnpm exec playwright install chromium --with-deps` - When running the tests first time +- `pnpm test` + +## Development + +- `pnpm start` - Starts example/fixture project's development server +- `pnpm test:ui` - Start Playwright in UI mode + +## Structure + +Test cases are located in `test` directory. +Each test file has its own `chapter`, that contains `lesson`s for test cases: + +For example Navigation tests: + +``` +├── src/content/tutorial +│ └── tests +│ └──── navigation +│ ├── page-one +│ ├── page-three +│ └── page-two +└── test + └── navigation.test.ts +``` + +Or File Tree tests: + +``` +├── src/content/tutorial +│ └── tests +│ └── file-tree +│ └── lesson-and-solution +└── test + └── file-tree.test.ts +``` diff --git a/test/ui/astro.config.ts b/test/ui/astro.config.ts new file mode 100644 index 00000000..6814ced5 --- /dev/null +++ b/test/ui/astro.config.ts @@ -0,0 +1,23 @@ +import { createRequire } from 'node:module'; +import { resolve } from 'node:path'; +import tutorialkit from '@tutorialkit/astro'; +import { defineConfig } from 'astro/config'; + +const require = createRequire(import.meta.url); +const astroDist = resolve(require.resolve('astro/package.json'), '..'); +const swapFunctionEntry = resolve(astroDist, 'dist/transitions/swap-functions.js'); + +export default defineConfig({ + devToolbar: { enabled: false }, + server: { port: 4329 }, + integrations: [tutorialkit()], + + vite: { + resolve: { + alias: { + // work-around for https://github.com/stackblitz/tutorialkit/pull/238 + 'node_modules/astro/dist/transitions/swap-functions': swapFunctionEntry, + }, + }, + }, +}); diff --git a/test/ui/package.json b/test/ui/package.json new file mode 100644 index 00000000..07607c9c --- /dev/null +++ b/test/ui/package.json @@ -0,0 +1,32 @@ +{ + "name": "@tutorialkit/test-ui", + "private": true, + "type": "module", + "scripts": { + "dev": "astro dev", + "start": "astro dev", + "preview": "astro build && astro preview", + "test": "playwright test", + "test:ui": "pnpm run test --ui" + }, + "devDependencies": { + "@astrojs/react": "^3.6.0", + "@iconify-json/ph": "^1.1.13", + "@iconify-json/svg-spinners": "^1.1.2", + "@playwright/test": "^1.46.0", + "@tutorialkit/astro": "workspace:*", + "@tutorialkit/components-react": "workspace:*", + "@tutorialkit/runtime": "workspace:*", + "@tutorialkit/theme": "workspace:*", + "@tutorialkit/types": "workspace:*", + "@types/node": "^22.2.0", + "@unocss/reset": "^0.59.4", + "@unocss/transformer-directives": "^0.62.0", + "astro": "^4.12.0", + "fast-glob": "^3.3.2", + "playwright": "^1.46.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "unocss": "^0.59.4" + } +} diff --git a/test/ui/playwright.config.ts b/test/ui/playwright.config.ts new file mode 100644 index 00000000..3c09769f --- /dev/null +++ b/test/ui/playwright.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from '@playwright/test'; + +export default defineConfig({ + expect: { + timeout: process.env.CI ? 30_000 : 10_000, + }, + use: { + baseURL: 'http://localhost:4329', + }, + webServer: { + command: 'pnpm preview', + url: 'http://localhost:4329', + reuseExistingServer: !process.env.CI, + stdout: 'ignore', + stderr: 'pipe', + }, +}); diff --git a/test/ui/public/logo.svg b/test/ui/public/logo.svg new file mode 100644 index 00000000..57ad62a4 --- /dev/null +++ b/test/ui/public/logo.svg @@ -0,0 +1 @@ + diff --git a/test/ui/src/content/config.ts b/test/ui/src/content/config.ts new file mode 100644 index 00000000..8e595c05 --- /dev/null +++ b/test/ui/src/content/config.ts @@ -0,0 +1,9 @@ +import { contentSchema } from '@tutorialkit/types'; +import { defineCollection } from 'astro:content'; + +const tutorial = defineCollection({ + type: 'content', + schema: contentSchema, +}); + +export const collections = { tutorial }; diff --git a/test/ui/src/content/tutorial/meta.md b/test/ui/src/content/tutorial/meta.md new file mode 100644 index 00000000..29eef72c --- /dev/null +++ b/test/ui/src/content/tutorial/meta.md @@ -0,0 +1,5 @@ +--- +type: tutorial +mainCommand: '' +prepareCommands: [] +--- diff --git a/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.html b/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.html new file mode 100644 index 00000000..011dc537 --- /dev/null +++ b/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.html @@ -0,0 +1,8 @@ + + + Lesson file example.html title + + + Lesson file example.html content + + diff --git a/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.js b/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.js new file mode 100644 index 00000000..cd356077 --- /dev/null +++ b/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.js @@ -0,0 +1 @@ +export default 'Lesson file example.js content'; diff --git a/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.html b/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.html new file mode 100644 index 00000000..14493277 --- /dev/null +++ b/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.html @@ -0,0 +1,8 @@ + + + Solution file example.html title + + + Solution file example.html content + + diff --git a/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.js b/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.js new file mode 100644 index 00000000..6cf75a45 --- /dev/null +++ b/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.js @@ -0,0 +1 @@ +export default 'Solution file example.js content'; diff --git a/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/content.md b/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/content.md new file mode 100644 index 00000000..8a53098b --- /dev/null +++ b/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/content.md @@ -0,0 +1,6 @@ +--- +type: lesson +title: Lesson and solution +--- + +# File Tree test - Lesson and solution diff --git a/test/ui/src/content/tutorial/tests/file-tree/meta.md b/test/ui/src/content/tutorial/tests/file-tree/meta.md new file mode 100644 index 00000000..0c250534 --- /dev/null +++ b/test/ui/src/content/tutorial/tests/file-tree/meta.md @@ -0,0 +1,4 @@ +--- +type: chapter +title: File Tree +--- diff --git a/test/ui/src/content/tutorial/tests/file-tree/no-solution/_files/example.html b/test/ui/src/content/tutorial/tests/file-tree/no-solution/_files/example.html new file mode 100644 index 00000000..011dc537 --- /dev/null +++ b/test/ui/src/content/tutorial/tests/file-tree/no-solution/_files/example.html @@ -0,0 +1,8 @@ + + + Lesson file example.html title + + + Lesson file example.html content + + diff --git a/test/ui/src/content/tutorial/tests/file-tree/no-solution/_files/example.js b/test/ui/src/content/tutorial/tests/file-tree/no-solution/_files/example.js new file mode 100644 index 00000000..cd356077 --- /dev/null +++ b/test/ui/src/content/tutorial/tests/file-tree/no-solution/_files/example.js @@ -0,0 +1 @@ +export default 'Lesson file example.js content'; diff --git a/test/ui/src/content/tutorial/tests/file-tree/no-solution/content.md b/test/ui/src/content/tutorial/tests/file-tree/no-solution/content.md new file mode 100644 index 00000000..54342155 --- /dev/null +++ b/test/ui/src/content/tutorial/tests/file-tree/no-solution/content.md @@ -0,0 +1,6 @@ +--- +type: lesson +title: No solution +--- + +# File Tree test - No solution diff --git a/test/ui/src/content/tutorial/tests/meta.md b/test/ui/src/content/tutorial/tests/meta.md new file mode 100644 index 00000000..a9cbeaef --- /dev/null +++ b/test/ui/src/content/tutorial/tests/meta.md @@ -0,0 +1,4 @@ +--- +type: part +title: Tests +--- diff --git a/test/ui/src/content/tutorial/tests/navigation/meta.md b/test/ui/src/content/tutorial/tests/navigation/meta.md new file mode 100644 index 00000000..4842a08d --- /dev/null +++ b/test/ui/src/content/tutorial/tests/navigation/meta.md @@ -0,0 +1,10 @@ +--- +type: chapter +title: Navigation +lessons: + - page-one + - page-two + - page-three +mainCommand: '' +prepareCommands: [] +--- diff --git a/test/ui/src/content/tutorial/tests/navigation/page-one/content.md b/test/ui/src/content/tutorial/tests/navigation/page-one/content.md new file mode 100644 index 00000000..36d93ec8 --- /dev/null +++ b/test/ui/src/content/tutorial/tests/navigation/page-one/content.md @@ -0,0 +1,6 @@ +--- +type: lesson +title: Page one +--- + +# Navigation test - Page one diff --git a/test/ui/src/content/tutorial/tests/navigation/page-three/content.md b/test/ui/src/content/tutorial/tests/navigation/page-three/content.md new file mode 100644 index 00000000..81e0a02e --- /dev/null +++ b/test/ui/src/content/tutorial/tests/navigation/page-three/content.md @@ -0,0 +1,6 @@ +--- +type: lesson +title: Page three +--- + +# Navigation test - Page three diff --git a/test/ui/src/content/tutorial/tests/navigation/page-two/content.md b/test/ui/src/content/tutorial/tests/navigation/page-two/content.md new file mode 100644 index 00000000..d6d92bc5 --- /dev/null +++ b/test/ui/src/content/tutorial/tests/navigation/page-two/content.md @@ -0,0 +1,6 @@ +--- +type: lesson +title: Page two +--- + +# Navigation test - Page two diff --git a/test/ui/src/content/tutorial/tests/preview/meta.md b/test/ui/src/content/tutorial/tests/preview/meta.md new file mode 100644 index 00000000..c43f388d --- /dev/null +++ b/test/ui/src/content/tutorial/tests/preview/meta.md @@ -0,0 +1,5 @@ +--- +type: chapter +title: Preview +mainCommand: 'pnpm start' +--- diff --git a/test/ui/src/content/tutorial/tests/preview/multiple/content.md b/test/ui/src/content/tutorial/tests/preview/multiple/content.md new file mode 100644 index 00000000..c7509b1d --- /dev/null +++ b/test/ui/src/content/tutorial/tests/preview/multiple/content.md @@ -0,0 +1,9 @@ +--- +type: lesson +title: Multiple +previews: + - [8000, "First Server"] + - [8000, "Second Server", "/about.html"] +--- + +# Preview test - Multiple diff --git a/test/ui/src/content/tutorial/tests/preview/single/content.md b/test/ui/src/content/tutorial/tests/preview/single/content.md new file mode 100644 index 00000000..387761f4 --- /dev/null +++ b/test/ui/src/content/tutorial/tests/preview/single/content.md @@ -0,0 +1,8 @@ +--- +type: lesson +title: Single +previews: + - [8000, "Node Server"] +--- + +# Preview test - Single diff --git a/test/ui/src/env.d.ts b/test/ui/src/env.d.ts new file mode 100644 index 00000000..9505823a --- /dev/null +++ b/test/ui/src/env.d.ts @@ -0,0 +1,3 @@ +/// +/// +/// diff --git a/test/ui/src/templates/default/about.html b/test/ui/src/templates/default/about.html new file mode 100644 index 00000000..b7d6b834 --- /dev/null +++ b/test/ui/src/templates/default/about.html @@ -0,0 +1,14 @@ + + + + + + Default template + + +
+

Default template

+

About

+
+ + diff --git a/test/ui/src/templates/default/index.html b/test/ui/src/templates/default/index.html new file mode 100644 index 00000000..c6c8c3fe --- /dev/null +++ b/test/ui/src/templates/default/index.html @@ -0,0 +1,14 @@ + + + + + + Default template + + +
+

Default template

+

Index

+
+ + diff --git a/test/ui/src/templates/default/index.mjs b/test/ui/src/templates/default/index.mjs new file mode 100644 index 00000000..36969fe0 --- /dev/null +++ b/test/ui/src/templates/default/index.mjs @@ -0,0 +1,23 @@ +import http from 'node:http'; +import { readFileSync } from 'node:fs'; + +const server = http.createServer((req, res) => { + if (req.url === '/' || req.url === '/index.html') { + res.writeHead(200, { 'Content-Type': 'text/html' }); + res.end(readFileSync('./index.html', 'utf8')); + + return; + } + + if (req.url === '/about.html') { + res.writeHead(200, { 'Content-Type': 'text/html' }); + res.end(readFileSync('./about.html')); + + return; + } + + res.writeHead(200, { 'Content-Type': 'text/html' }); + res.end('Not found'); +}); + +server.listen(8000); diff --git a/test/ui/src/templates/default/package.json b/test/ui/src/templates/default/package.json new file mode 100644 index 00000000..accec009 --- /dev/null +++ b/test/ui/src/templates/default/package.json @@ -0,0 +1,9 @@ +{ + "name": "default-template", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "start": "node ./index.mjs" + } +} diff --git a/test/ui/test/file-tree.test.ts b/test/ui/test/file-tree.test.ts new file mode 100644 index 00000000..2f062049 --- /dev/null +++ b/test/ui/test/file-tree.test.ts @@ -0,0 +1,59 @@ +import { test, expect } from '@playwright/test'; +import { readLessonFilesAndSolution } from './utils.js'; + +const BASE_URL = '/tests/file-tree'; + +const fixtures = readLessonFilesAndSolution('file-tree/lesson-and-solution', 'file-tree/no-solution'); + +test('user can see lesson and solution files', async ({ page }) => { + const testCase = 'lesson-and-solution'; + await page.goto(`${BASE_URL}/${testCase}`); + + await expect(page.getByRole('heading', { level: 1, name: 'File Tree test - Lesson and solution' })).toBeVisible(); + + // lesson files + for (const file of ['example.html', 'example.js']) { + await page.getByRole('button', { name: file }).click(); + await expect(page.getByRole('button', { name: file, pressed: true })).toBeVisible(); + + await expect(page.getByRole('textbox', { name: 'Editor' })).toHaveText(fixtures[testCase].files[file], { + useInnerText: true, + }); + } + + await page.getByRole('button', { name: 'Solve', disabled: false }).click(); + await expect(page.getByRole('button', { name: 'Reset' })).toBeVisible(); + + // solution files + for (const file of ['example.html', 'example.js']) { + await page.getByRole('button', { name: file }).click(); + await expect(page.getByRole('button', { name: file, pressed: true })).toBeVisible(); + + // TODO: Figure out why this is flaky + await page.waitForTimeout(1_000); + + await expect(page.getByRole('textbox', { name: 'Editor' })).toHaveText(fixtures[testCase].solution[file], { + useInnerText: true, + }); + } +}); + +test('user can see cannot click solve on lessons without solution files', async ({ page }) => { + const testCase = 'no-solution'; + await page.goto(`${BASE_URL}/${testCase}`); + + await expect(page.getByRole('heading', { level: 1, name: 'File Tree test - No solution' })).toBeVisible(); + + // lesson files + for (const file of ['example.html', 'example.js']) { + await page.getByRole('button', { name: file }).click(); + await expect(page.getByRole('button', { name: file, pressed: true })).toBeVisible(); + + await expect(page.getByRole('textbox', { name: 'Editor' })).toHaveText(fixtures[testCase].files[file], { + useInnerText: true, + }); + } + + // reset-button should be immediately visible + await expect(page.getByRole('button', { name: 'Reset' })).toBeVisible(); +}); diff --git a/test/ui/test/navigation.test.ts b/test/ui/test/navigation.test.ts new file mode 100644 index 00000000..bf56be55 --- /dev/null +++ b/test/ui/test/navigation.test.ts @@ -0,0 +1,30 @@ +import { test, expect } from '@playwright/test'; + +const BASE_URL = '/tests/navigation/page-one'; + +test('user can navigate between lessons using nav bar links', async ({ page }) => { + await page.goto(BASE_URL); + await expect(page.getByRole('heading', { level: 1, name: 'Navigation test - Page one' })).toBeVisible(); + + // navigate forwards + await navigateToPage('Page two'); + await navigateToPage('Page three'); + + // navigate backwards + await navigateToPage('Page two'); + await navigateToPage('Page one'); + + async function navigateToPage(title: string) { + await page.getByRole('link', { name: title }).click(); + await expect(page.getByRole('heading', { level: 1, name: `Navigation test - ${title}` })).toBeVisible(); + } +}); + +test('user can navigate between lessons using breadcrumbs', async ({ page }) => { + await page.goto(BASE_URL); + + await page.getByRole('button', { name: 'Tests / Navigation / Page one' }).click({ force: true }); + await page.getByRole('region', { name: 'Navigation' }).getByRole('link', { name: 'Page three' }).click(); + + await expect(page.getByRole('heading', { level: 1, name: 'Navigation test - Page three' })).toBeVisible(); +}); diff --git a/test/ui/test/preview.test.ts b/test/ui/test/preview.test.ts new file mode 100644 index 00000000..ec772d32 --- /dev/null +++ b/test/ui/test/preview.test.ts @@ -0,0 +1,27 @@ +import { test, expect } from '@playwright/test'; + +const BASE_URL = '/tests/preview'; + +test('user can see single preview tab', async ({ page }) => { + await page.goto(`${BASE_URL}/single`); + + await expect(page.getByRole('heading', { level: 1, name: 'Preview test - Single' })).toBeVisible(); + + await expect(page.getByText('Node Server')).toBeVisible(); + + const preview = page.frameLocator('[title="Node Server"]'); + await expect(preview.getByText('Default template')).toBeVisible(); + await expect(preview.getByText('Index')).toBeVisible(); +}); + +test('user can see multiple preview tabs', async ({ page }) => { + await page.goto(`${BASE_URL}/multiple`); + + await expect(page.getByRole('heading', { level: 1, name: 'Preview test - Multiple' })).toBeVisible(); + + await expect(page.getByText('First Server')).toBeVisible(); + await expect(page.getByText('Second Server')).toBeVisible(); + + await expect(page.frameLocator('[title="First Server"]').getByText('Index')).toBeVisible({ timeout: 10_000 }); + await expect(page.frameLocator('[title="Second Server"]').getByText('About')).toBeVisible({ timeout: 10_000 }); +}); diff --git a/test/ui/test/utils.ts b/test/ui/test/utils.ts new file mode 100644 index 00000000..d874e093 --- /dev/null +++ b/test/ui/test/utils.ts @@ -0,0 +1,33 @@ +import { readdirSync, readFileSync, existsSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; + +const TESTS_DIR = fileURLToPath(new URL('../src/content/tutorial/tests', import.meta.url)); + +export function readLessonFilesAndSolution( + ...lessons: string[] +): Record; solution: Record }> { + return lessons.reduce( + (all, lesson) => ({ + ...all, + [lesson.split('/')[1]]: { + files: readDirFiles(`${TESTS_DIR}/${lesson}/_files`), + solution: readDirFiles(`${TESTS_DIR}/${lesson}/_solution`), + }, + }), + {}, + ); +} + +function readDirFiles(dir: string): Record { + if (!existsSync(dir)) { + return {}; + } + + return readdirSync(dir).reduce( + (files, file) => ({ + ...files, + [file]: readFileSync(`${dir}/${file}`, 'utf8'), + }), + {}, + ); +} diff --git a/test/ui/uno.config.ts b/test/ui/uno.config.ts new file mode 100644 index 00000000..7018afe8 --- /dev/null +++ b/test/ui/uno.config.ts @@ -0,0 +1,47 @@ +import fs from 'node:fs/promises'; +import { basename, dirname, join } from 'node:path'; +import { globSync, convertPathToPattern } from 'fast-glob'; +import { defineConfig, presetIcons, presetUno, transformerDirectives } from 'unocss'; +import { rules, shortcuts, theme } from '@tutorialkit/theme'; + +const iconPaths = globSync('./icons/languages/*.svg'); + +const customIconCollection = iconPaths.reduce( + (acc, iconPath) => { + const collectionName = basename(dirname(iconPath)); + const [iconName] = basename(iconPath).split('.'); + + acc[collectionName] ??= {}; + acc[collectionName][iconName] = async () => fs.readFile(iconPath, 'utf8'); + + return acc; + }, + {} as Record Promise>>, +); + +export default defineConfig({ + rules, + shortcuts, + theme, + content: { + inline: globSync([ + `${convertPathToPattern(join(require.resolve('@tutorialkit/components-react'), '..')).replace('\\@', '/@')}/**/*.js`, + `${convertPathToPattern(join(require.resolve('@tutorialkit/astro'), '..')).replace('\\@', '/@')}/default/**/*.astro`, + ]).map((filePath) => { + return () => fs.readFile(filePath, { encoding: 'utf8' }); + }), + }, + transformers: [transformerDirectives()], + presets: [ + presetUno({ + dark: { + dark: '[data-theme="dark"]', + }, + }), + presetIcons({ + collections: { + ...customIconCollection, + }, + }), + ], +}); From 418041b31786108f1ed6a67e2d5ff90182be9333 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Wed, 21 Aug 2024 14:34:05 +0300 Subject: [PATCH 3/9] fix: code review --- test/ui/src/content/tutorial/tests/preview/meta.md | 2 +- test/ui/src/templates/default/about.html | 14 -------------- test/ui/src/templates/default/index.html | 14 -------------- test/ui/src/templates/default/index.mjs | 5 ++--- test/ui/src/templates/default/package.json | 9 --------- test/ui/test/preview.test.ts | 7 +++---- 6 files changed, 6 insertions(+), 45 deletions(-) delete mode 100644 test/ui/src/templates/default/about.html delete mode 100644 test/ui/src/templates/default/index.html delete mode 100644 test/ui/src/templates/default/package.json diff --git a/test/ui/src/content/tutorial/tests/preview/meta.md b/test/ui/src/content/tutorial/tests/preview/meta.md index c43f388d..89205e01 100644 --- a/test/ui/src/content/tutorial/tests/preview/meta.md +++ b/test/ui/src/content/tutorial/tests/preview/meta.md @@ -1,5 +1,5 @@ --- type: chapter title: Preview -mainCommand: 'pnpm start' +mainCommand: 'node ./index.mjs' --- diff --git a/test/ui/src/templates/default/about.html b/test/ui/src/templates/default/about.html deleted file mode 100644 index b7d6b834..00000000 --- a/test/ui/src/templates/default/about.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - Default template - - -
-

Default template

-

About

-
- - diff --git a/test/ui/src/templates/default/index.html b/test/ui/src/templates/default/index.html deleted file mode 100644 index c6c8c3fe..00000000 --- a/test/ui/src/templates/default/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - Default template - - -
-

Default template

-

Index

-
- - diff --git a/test/ui/src/templates/default/index.mjs b/test/ui/src/templates/default/index.mjs index 36969fe0..148d1ae2 100644 --- a/test/ui/src/templates/default/index.mjs +++ b/test/ui/src/templates/default/index.mjs @@ -1,17 +1,16 @@ import http from 'node:http'; -import { readFileSync } from 'node:fs'; const server = http.createServer((req, res) => { if (req.url === '/' || req.url === '/index.html') { res.writeHead(200, { 'Content-Type': 'text/html' }); - res.end(readFileSync('./index.html', 'utf8')); + res.end('Index page'); return; } if (req.url === '/about.html') { res.writeHead(200, { 'Content-Type': 'text/html' }); - res.end(readFileSync('./about.html')); + res.end('About page'); return; } diff --git a/test/ui/src/templates/default/package.json b/test/ui/src/templates/default/package.json deleted file mode 100644 index accec009..00000000 --- a/test/ui/src/templates/default/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "default-template", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "start": "node ./index.mjs" - } -} diff --git a/test/ui/test/preview.test.ts b/test/ui/test/preview.test.ts index ec772d32..7ebe4b84 100644 --- a/test/ui/test/preview.test.ts +++ b/test/ui/test/preview.test.ts @@ -10,8 +10,7 @@ test('user can see single preview tab', async ({ page }) => { await expect(page.getByText('Node Server')).toBeVisible(); const preview = page.frameLocator('[title="Node Server"]'); - await expect(preview.getByText('Default template')).toBeVisible(); - await expect(preview.getByText('Index')).toBeVisible(); + await expect(preview.getByText('Index page')).toBeVisible(); }); test('user can see multiple preview tabs', async ({ page }) => { @@ -22,6 +21,6 @@ test('user can see multiple preview tabs', async ({ page }) => { await expect(page.getByText('First Server')).toBeVisible(); await expect(page.getByText('Second Server')).toBeVisible(); - await expect(page.frameLocator('[title="First Server"]').getByText('Index')).toBeVisible({ timeout: 10_000 }); - await expect(page.frameLocator('[title="Second Server"]').getByText('About')).toBeVisible({ timeout: 10_000 }); + await expect(page.frameLocator('[title="First Server"]').getByText('Index page')).toBeVisible({ timeout: 10_000 }); + await expect(page.frameLocator('[title="Second Server"]').getByText('About page')).toBeVisible({ timeout: 10_000 }); }); From 4bb621b90dedbf5d7eede5c60558f156d2025b2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Wed, 21 Aug 2024 14:38:31 +0300 Subject: [PATCH 4/9] Revert "refactor: move `integration` to `test/cli`" This reverts commit bcb666fe28a031784c02e78fd9a24dba985425f6. --- .github/workflows/integration-test-cli.yaml | 2 +- .../cli}/__snapshots__/npm-built.json | 0 .../cli}/__snapshots__/npm-created.json | 0 .../cli}/__snapshots__/pnpm-built.json | 0 .../cli}/__snapshots__/pnpm-created.json | 0 .../cli}/__snapshots__/yarn-built.json | 0 .../cli}/__snapshots__/yarn-created.json | 0 .../cli}/create-tutorial.test.ts | 2 +- {test/cli => integration}/package.json | 2 +- pnpm-lock.yaml | 603 +++++------------- pnpm-workspace.yaml | 2 +- test/cli/README.md | 11 - 12 files changed, 150 insertions(+), 472 deletions(-) rename {test/cli/test => integration/cli}/__snapshots__/npm-built.json (100%) rename {test/cli/test => integration/cli}/__snapshots__/npm-created.json (100%) rename {test/cli/test => integration/cli}/__snapshots__/pnpm-built.json (100%) rename {test/cli/test => integration/cli}/__snapshots__/pnpm-created.json (100%) rename {test/cli/test => integration/cli}/__snapshots__/yarn-built.json (100%) rename {test/cli/test => integration/cli}/__snapshots__/yarn-created.json (100%) rename {test/cli/test => integration/cli}/create-tutorial.test.ts (97%) rename {test/cli => integration}/package.json (83%) delete mode 100644 test/cli/README.md diff --git a/.github/workflows/integration-test-cli.yaml b/.github/workflows/integration-test-cli.yaml index 09f40a99..6580f027 100644 --- a/.github/workflows/integration-test-cli.yaml +++ b/.github/workflows/integration-test-cli.yaml @@ -23,5 +23,5 @@ jobs: run: pnpm build-release - name: Integration Tests - working-directory: ./test/cli + working-directory: ./integration run: pnpm test diff --git a/test/cli/test/__snapshots__/npm-built.json b/integration/cli/__snapshots__/npm-built.json similarity index 100% rename from test/cli/test/__snapshots__/npm-built.json rename to integration/cli/__snapshots__/npm-built.json diff --git a/test/cli/test/__snapshots__/npm-created.json b/integration/cli/__snapshots__/npm-created.json similarity index 100% rename from test/cli/test/__snapshots__/npm-created.json rename to integration/cli/__snapshots__/npm-created.json diff --git a/test/cli/test/__snapshots__/pnpm-built.json b/integration/cli/__snapshots__/pnpm-built.json similarity index 100% rename from test/cli/test/__snapshots__/pnpm-built.json rename to integration/cli/__snapshots__/pnpm-built.json diff --git a/test/cli/test/__snapshots__/pnpm-created.json b/integration/cli/__snapshots__/pnpm-created.json similarity index 100% rename from test/cli/test/__snapshots__/pnpm-created.json rename to integration/cli/__snapshots__/pnpm-created.json diff --git a/test/cli/test/__snapshots__/yarn-built.json b/integration/cli/__snapshots__/yarn-built.json similarity index 100% rename from test/cli/test/__snapshots__/yarn-built.json rename to integration/cli/__snapshots__/yarn-built.json diff --git a/test/cli/test/__snapshots__/yarn-created.json b/integration/cli/__snapshots__/yarn-created.json similarity index 100% rename from test/cli/test/__snapshots__/yarn-created.json rename to integration/cli/__snapshots__/yarn-created.json diff --git a/test/cli/test/create-tutorial.test.ts b/integration/cli/create-tutorial.test.ts similarity index 97% rename from test/cli/test/create-tutorial.test.ts rename to integration/cli/create-tutorial.test.ts index 4b1f4757..32c058aa 100644 --- a/test/cli/test/create-tutorial.test.ts +++ b/integration/cli/create-tutorial.test.ts @@ -4,7 +4,7 @@ import { describe, beforeEach, afterAll, expect, it } from 'vitest'; import { execa } from 'execa'; import { temporaryDirectory } from 'tempy'; -const baseDir = path.resolve(__dirname, '../../..'); +const baseDir = path.resolve(__dirname, '../..'); const cli = path.join(baseDir, 'packages/cli/dist/index.js'); diff --git a/test/cli/package.json b/integration/package.json similarity index 83% rename from test/cli/package.json rename to integration/package.json index 0a1f9cae..16409ebd 100644 --- a/test/cli/package.json +++ b/integration/package.json @@ -1,5 +1,5 @@ { - "name": "@tutorialkit-cli/test-cli", + "name": "tutorialkit-integration", "private": true, "type": "module", "scripts": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cd926578..9b9c5e11 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -86,7 +86,7 @@ importers: version: 0.59.4 astro: specifier: ^4.12.0 - version: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) + version: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) fast-glob: specifier: ^3.3.2 version: 3.3.2 @@ -225,6 +225,18 @@ importers: specifier: 3.23.1 version: 3.23.1(zod@3.23.8) + integration: + dependencies: + execa: + specifier: ^9.2.0 + version: 9.2.0 + tempy: + specifier: ^3.1.0 + version: 3.1.0 + vitest: + specifier: ^1.6.0 + version: 1.6.0(@types/node@20.14.11) + packages/astro: dependencies: '@astrojs/mdx': @@ -265,7 +277,7 @@ importers: version: 1.2.0 astro: specifier: ^4.12.0 - version: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) + version: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) astro-expressive-code: specifier: ^0.35.3 version: 0.35.3(astro@4.12.2) @@ -604,7 +616,7 @@ importers: version: 0.59.4 astro: specifier: ^4.12.0 - version: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) + version: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) fast-glob: specifier: ^3.3.2 version: 3.3.2 @@ -653,75 +665,6 @@ importers: specifier: ^1.6.0 version: 1.6.0(@types/node@20.14.11) - test/cli: - dependencies: - execa: - specifier: ^9.2.0 - version: 9.2.0 - tempy: - specifier: ^3.1.0 - version: 3.1.0 - vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@20.14.11) - - test/ui: - devDependencies: - '@astrojs/react': - specifier: ^3.6.0 - version: 3.6.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(vite@5.3.4) - '@iconify-json/ph': - specifier: ^1.1.13 - version: 1.1.13 - '@iconify-json/svg-spinners': - specifier: ^1.1.2 - version: 1.1.2 - '@playwright/test': - specifier: ^1.46.0 - version: 1.46.0 - '@tutorialkit/astro': - specifier: workspace:* - version: link:../../packages/astro - '@tutorialkit/components-react': - specifier: workspace:* - version: link:../../packages/components/react - '@tutorialkit/runtime': - specifier: workspace:* - version: link:../../packages/runtime - '@tutorialkit/theme': - specifier: workspace:* - version: link:../../packages/theme - '@tutorialkit/types': - specifier: workspace:* - version: link:../../packages/types - '@types/node': - specifier: ^22.2.0 - version: 22.2.0 - '@unocss/reset': - specifier: ^0.59.4 - version: 0.59.4 - '@unocss/transformer-directives': - specifier: ^0.62.0 - version: 0.62.0 - astro: - specifier: ^4.12.0 - version: 4.12.2(@types/node@22.2.0)(typescript@5.5.3) - fast-glob: - specifier: ^3.3.2 - version: 3.3.2 - playwright: - specifier: ^1.46.0 - version: 1.46.0 - react: - specifier: ^18.3.1 - version: 18.3.1 - react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) - unocss: - specifier: ^0.59.4 - version: 0.59.4(postcss@8.4.39)(vite@5.3.4) - packages: /@ampproject/remapping@2.3.0: @@ -855,7 +798,7 @@ packages: '@astrojs/markdown-remark': 5.1.0 '@mdx-js/mdx': 3.0.1 acorn: 8.12.0 - astro: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) + astro: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) es-module-lexer: 1.5.3 estree-util-visit: 2.0.0 github-slugger: 2.0.0 @@ -955,10 +898,36 @@ packages: '@babel/highlight': 7.24.7 picocolors: 1.0.1 + /@babel/compat-data@7.24.7: + resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} + engines: {node: '>=6.9.0'} + /@babel/compat-data@7.24.9: resolution: {integrity: sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==} engines: {node: '>=6.9.0'} + /@babel/core@7.24.7: + resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helpers': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + convert-source-map: 2.0.0 + debug: 4.3.5 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + /@babel/core@7.24.9: resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} engines: {node: '>=6.9.0'} @@ -1013,7 +982,17 @@ packages: resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.24.7 + + /@babel/helper-compilation-targets@7.24.7: + resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + browserslist: 4.23.1 + lru-cache: 5.1.1 + semver: 6.3.1 /@babel/helper-compilation-targets@7.24.8: resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} @@ -1025,19 +1004,19 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.9): + /@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.7): resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-function-name': 7.24.7 '@babel/helper-member-expression-to-functions': 7.24.7 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.9) + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 '@babel/helper-split-export-declaration': 7.24.7 semver: 6.3.1 @@ -1048,20 +1027,20 @@ packages: resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.24.7 /@babel/helper-function-name@7.24.7: resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.24.7 - '@babel/types': 7.24.9 + '@babel/types': 7.24.7 /@babel/helper-hoist-variables@7.24.7: resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.24.7 /@babel/helper-member-expression-to-functions@7.24.7: resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} @@ -1076,18 +1055,18 @@ packages: resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color - /@babel/helper-module-transforms@7.24.7(@babel/core@7.24.9): + /@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7): resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 @@ -1121,13 +1100,13 @@ packages: resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} engines: {node: '>=6.9.0'} - /@babel/helper-replace-supers@7.24.7(@babel/core@7.24.9): + /@babel/helper-replace-supers@7.24.7(@babel/core@7.24.7): resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-member-expression-to-functions': 7.24.7 '@babel/helper-optimise-call-expression': 7.24.7 @@ -1138,8 +1117,8 @@ packages: resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -1156,7 +1135,7 @@ packages: resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.24.7 /@babel/helper-string-parser@7.24.7: resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} @@ -1170,10 +1149,21 @@ packages: resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.24.7: + resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.24.8: resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} + /@babel/helpers@7.24.7: + resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + /@babel/helpers@7.24.8: resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==} engines: {node: '>=6.9.0'} @@ -1196,7 +1186,6 @@ packages: hasBin: true dependencies: '@babel/types': 7.24.5 - dev: false /@babel/parser@7.24.7: resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} @@ -1210,7 +1199,16 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.24.5 + + /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.9): resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} @@ -1221,44 +1219,44 @@ packages: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.7 - /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.9): + /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7): resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - /@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.9): + /@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.7): resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.9 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.9) + '@babel/core': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.7 '@babel/helper-simple-access': 7.24.7 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.9): + /@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.7): resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - /@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.9): + /@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.7): resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 /@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.24.9): @@ -1276,32 +1274,32 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.9): + /@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.7): resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) transitivePeerDependencies: - supports-color - /@babel/preset-typescript@7.24.7(@babel/core@7.24.9): + /@babel/preset-typescript@7.24.7(@babel/core@7.24.7): resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.9) + '@babel/helper-validator-option': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) transitivePeerDependencies: - supports-color @@ -1310,8 +1308,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.24.8 - '@babel/types': 7.24.9 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 /@babel/traverse@7.24.5: resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} @@ -2526,9 +2524,6 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/sourcemap-codec@1.5.0: - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - /@jridgewell/trace-mapping@0.3.25: resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: @@ -2705,14 +2700,6 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dev: true - /@playwright/test@1.46.0: - resolution: {integrity: sha512-/QYft5VArOrGRP5pgkrfKksqsKA6CEFyGQ/gjNe6q0y4tZ1aaPfq4gIjudr1s3D+pXyrPRdsy4opKDrjBabE5w==} - engines: {node: '>=18'} - hasBin: true - dependencies: - playwright: 1.46.0 - dev: true - /@polka/url@1.0.0-next.25: resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} @@ -3152,8 +3139,8 @@ packages: /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.24.8 - '@babel/types': 7.24.9 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.5 @@ -3161,18 +3148,18 @@ packages: /@types/babel__generator@7.6.8: resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.24.5 /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.24.8 - '@babel/types': 7.24.9 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 /@types/babel__traverse@7.20.5: resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.24.5 /@types/conventional-commits-parser@5.0.0: resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} @@ -3259,12 +3246,6 @@ packages: dependencies: undici-types: 5.26.5 - /@types/node@22.2.0: - resolution: {integrity: sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==} - dependencies: - undici-types: 6.13.0 - dev: true - /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} dev: true @@ -3490,7 +3471,7 @@ packages: '@unocss/core': 0.59.4 '@unocss/reset': 0.59.4 '@unocss/vite': 0.59.4(vite@5.3.4) - vite: 5.3.4(@types/node@20.14.11) + vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) transitivePeerDependencies: - rollup @@ -3525,10 +3506,6 @@ packages: /@unocss/core@0.59.4: resolution: {integrity: sha512-bBZ1sgcAtezQVZ1BST9IS3jqcsTLyqKNjiIf7FTnX3DHpfpYuMDFzSOtmkZDzBleOLO/CtcRWjT0HwTSQAmV0A==} - /@unocss/core@0.62.0: - resolution: {integrity: sha512-ion+7oHnaVaVMIKFonOPB1J8iune7xOU2uw6CdJK+Kbf+1f0ET8aNCZ9UxJ02+/DDd+6e6ax6+9XrAj4J+XDCA==} - dev: true - /@unocss/extractor-arbitrary-variants@0.59.4: resolution: {integrity: sha512-RDe4FgMGJQ+tp9GLvhPHni7Cc2O0lHBRMElVlN8LoXJAdODMICdbrEPGJlEfrc+7x/QgVFoR895KpYJh3hIgGA==} dependencies: @@ -3619,23 +3596,15 @@ packages: '@unocss/core': 0.59.4 magic-string: 0.30.10 - /@unocss/rule-utils@0.62.0: - resolution: {integrity: sha512-2uL+sKoMEHRlkMH1aLAxQwC1tc9A7nEkJ6RwfJfDTs/8oIlHPALJUsaz69qESRWLMsafBHJ8nLuaPRgkTVRiRw==} - engines: {node: '>=14'} - dependencies: - '@unocss/core': 0.62.0 - magic-string: 0.30.11 - dev: true - /@unocss/scope@0.59.4: resolution: {integrity: sha512-wBQJ39kw4Tfj4km7AoGvSIobPKVnRZVsgc0bema5Y0PL3g1NeVQ/LopBI2zEJWdpxGXUWxSDsXm7BZo6qVlD/A==} /@unocss/transformer-attributify-jsx-babel@0.59.4: resolution: {integrity: sha512-xtCRSgeTaDBiNJLVX7oOSFe63JiFB5nrdK23PHn3IlZM9O7Bxx4ZxI3MQJtFZFQNE+INFko+DVyY1WiFEm1p/Q==} dependencies: - '@babel/core': 7.24.9 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) - '@babel/preset-typescript': 7.24.7(@babel/core@7.24.9) + '@babel/core': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) + '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) '@unocss/core': 0.59.4 transitivePeerDependencies: - supports-color @@ -3657,14 +3626,6 @@ packages: '@unocss/rule-utils': 0.59.4 css-tree: 2.3.1 - /@unocss/transformer-directives@0.62.0: - resolution: {integrity: sha512-uJw51mit0kbXnm5WYcLbKmItGA9kWkhXwS8nx1EY47bpz472ha72LURyNeGCnIHXngEETd0/oZ++BgsEqP7tYg==} - dependencies: - '@unocss/core': 0.62.0 - '@unocss/rule-utils': 0.62.0 - css-tree: 2.3.1 - dev: true - /@unocss/transformer-variant-group@0.59.4: resolution: {integrity: sha512-9XLixxn1NRgP62Kj4R/NC/rpqhql5F2s6ulJ8CAMTEbd/NylVhEANluPGDVUGcLJ4cj6E02hFa8C1PLGSm7/xw==} dependencies: @@ -3684,8 +3645,8 @@ packages: '@unocss/transformer-directives': 0.59.4 chokidar: 3.6.0 fast-glob: 3.3.2 - magic-string: 0.30.11 - vite: 5.3.4(@types/node@20.14.11) + magic-string: 0.30.10 + vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) transitivePeerDependencies: - rollup @@ -3695,12 +3656,12 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 dependencies: - '@babel/core': 7.24.9 - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.9) + '@babel/core': 7.24.7 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.3.4(@types/node@20.14.11) + vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) transitivePeerDependencies: - supports-color @@ -3914,7 +3875,7 @@ packages: resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} engines: {node: '>=0.4.0'} dependencies: - acorn: 8.12.1 + acorn: 8.12.0 /acorn@8.12.0: resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} @@ -4051,91 +4012,10 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^3.3.0 dependencies: - astro: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) + astro: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) rehype-expressive-code: 0.35.3 /astro@4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3): - resolution: {integrity: sha512-l6OmqlL+FiuSi9x6F+EGZitteOznq1JffOil7st7cdqeMCTEIym4oagI1a6zp6QekliKWEEZWdplGhgh1k1f7Q==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} - hasBin: true - dependencies: - '@astrojs/compiler': 2.9.1 - '@astrojs/internal-helpers': 0.4.1 - '@astrojs/markdown-remark': 5.2.0 - '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.24.9 - '@babel/generator': 7.24.10 - '@babel/parser': 7.24.8 - '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.24.9) - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 - '@types/babel__core': 7.20.5 - '@types/cookie': 0.6.0 - acorn: 8.12.1 - aria-query: 5.3.0 - axobject-query: 4.1.0 - boxen: 7.1.1 - chokidar: 3.6.0 - ci-info: 4.0.0 - clsx: 2.1.1 - common-ancestor-path: 1.0.1 - cookie: 0.6.0 - cssesc: 3.0.0 - debug: 4.3.5 - deterministic-object-hash: 2.0.2 - devalue: 5.0.0 - diff: 5.2.0 - dlv: 1.1.3 - dset: 3.1.3 - es-module-lexer: 1.5.4 - esbuild: 0.21.5 - estree-walker: 3.0.3 - execa: 8.0.1 - fast-glob: 3.3.2 - flattie: 1.1.1 - github-slugger: 2.0.0 - gray-matter: 4.0.3 - html-escaper: 3.0.3 - http-cache-semantics: 4.1.1 - js-yaml: 4.1.0 - kleur: 4.1.5 - magic-string: 0.30.11 - mrmime: 2.0.0 - ora: 8.0.1 - p-limit: 6.1.0 - p-queue: 8.0.1 - path-to-regexp: 6.2.2 - preferred-pm: 4.0.0 - prompts: 2.4.2 - rehype: 13.0.1 - semver: 7.6.2 - shiki: 1.11.0 - string-width: 7.2.0 - strip-ansi: 7.1.0 - tsconfck: 3.1.1(typescript@5.5.3) - unist-util-visit: 5.0.0 - vfile: 6.0.2 - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) - vitefu: 0.2.5(vite@5.3.4) - which-pm: 3.0.0 - yargs-parser: 21.1.1 - zod: 3.23.8 - zod-to-json-schema: 3.23.1(zod@3.23.8) - optionalDependencies: - sharp: 0.33.4 - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - typescript - dev: true - - /astro@4.12.2(@types/node@20.14.11)(typescript@5.5.3): resolution: {integrity: sha512-l6OmqlL+FiuSi9x6F+EGZitteOznq1JffOil7st7cdqeMCTEIym4oagI1a6zp6QekliKWEEZWdplGhgh1k1f7Q==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -4196,87 +4076,7 @@ packages: tsconfck: 3.1.1(typescript@5.5.3) unist-util-visit: 5.0.0 vfile: 6.0.2 - vite: 5.3.4(@types/node@20.14.11) - vitefu: 0.2.5(vite@5.3.4) - which-pm: 3.0.0 - yargs-parser: 21.1.1 - zod: 3.23.8 - zod-to-json-schema: 3.23.1(zod@3.23.8) - optionalDependencies: - sharp: 0.33.4 - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - typescript - - /astro@4.12.2(@types/node@22.2.0)(typescript@5.5.3): - resolution: {integrity: sha512-l6OmqlL+FiuSi9x6F+EGZitteOznq1JffOil7st7cdqeMCTEIym4oagI1a6zp6QekliKWEEZWdplGhgh1k1f7Q==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} - hasBin: true - dependencies: - '@astrojs/compiler': 2.9.1 - '@astrojs/internal-helpers': 0.4.1 - '@astrojs/markdown-remark': 5.2.0 - '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.24.9 - '@babel/generator': 7.24.10 - '@babel/parser': 7.24.8 - '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.24.9) - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 - '@types/babel__core': 7.20.5 - '@types/cookie': 0.6.0 - acorn: 8.12.1 - aria-query: 5.3.0 - axobject-query: 4.1.0 - boxen: 7.1.1 - chokidar: 3.6.0 - ci-info: 4.0.0 - clsx: 2.1.1 - common-ancestor-path: 1.0.1 - cookie: 0.6.0 - cssesc: 3.0.0 - debug: 4.3.5 - deterministic-object-hash: 2.0.2 - devalue: 5.0.0 - diff: 5.2.0 - dlv: 1.1.3 - dset: 3.1.3 - es-module-lexer: 1.5.4 - esbuild: 0.21.5 - estree-walker: 3.0.3 - execa: 8.0.1 - fast-glob: 3.3.2 - flattie: 1.1.1 - github-slugger: 2.0.0 - gray-matter: 4.0.3 - html-escaper: 3.0.3 - http-cache-semantics: 4.1.1 - js-yaml: 4.1.0 - kleur: 4.1.5 - magic-string: 0.30.11 - mrmime: 2.0.0 - ora: 8.0.1 - p-limit: 6.1.0 - p-queue: 8.0.1 - path-to-regexp: 6.2.2 - preferred-pm: 4.0.0 - prompts: 2.4.2 - rehype: 13.0.1 - semver: 7.6.2 - shiki: 1.11.0 - string-width: 7.2.0 - strip-ansi: 7.1.0 - tsconfck: 3.1.1(typescript@5.5.3) - unist-util-visit: 5.0.0 - vfile: 6.0.2 - vite: 5.3.4(@types/node@22.2.0) + vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) vitefu: 0.2.5(vite@5.3.4) which-pm: 3.0.0 yargs-parser: 21.1.1 @@ -4294,7 +4094,6 @@ packages: - supports-color - terser - typescript - dev: true /astrojs-compiler-sync@1.0.0(@astrojs/compiler@2.9.1): resolution: {integrity: sha512-IM6FxpMoBxkGGdKppkFHNQIC9Wge7jspG2MIJff8DOhG41USNJLxJfxRm7wnkTKWlYK5Y1YFFNYr2vUUKkI8sw==} @@ -4602,7 +4401,6 @@ packages: /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - requiresBuild: true dependencies: color-name: 1.1.4 @@ -5591,14 +5389,6 @@ packages: universalify: 2.0.1 dev: true - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -5797,7 +5587,7 @@ packages: devlop: 1.1.0 hast-util-from-parse5: 8.0.1 parse5: 7.1.2 - vfile: 6.0.2 + vfile: 6.0.1 vfile-message: 4.0.2 /hast-util-from-parse5@8.0.1: @@ -5808,7 +5598,7 @@ packages: devlop: 1.1.0 hastscript: 8.0.0 property-information: 6.5.0 - vfile: 6.0.2 + vfile: 6.0.1 vfile-location: 5.0.2 web-namespaces: 2.0.1 @@ -5856,7 +5646,7 @@ packages: parse5: 7.1.2 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.2 + vfile: 6.0.1 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -6034,7 +5824,6 @@ packages: /immutable@4.3.6: resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} - dev: true /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -6453,11 +6242,6 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - /magic-string@0.30.11: - resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - /markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -6646,7 +6430,7 @@ packages: trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.2 + vfile: 6.0.1 /mdast-util-to-markdown@2.1.0: resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} @@ -7047,7 +6831,7 @@ packages: /mlly@1.7.1: resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} dependencies: - acorn: 8.12.1 + acorn: 8.12.0 pathe: 1.1.2 pkg-types: 1.1.1 ufo: 1.5.3 @@ -7230,7 +7014,7 @@ packages: resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} engines: {node: '>=18'} dependencies: - yocto-queue: 1.1.1 + yocto-queue: 1.0.0 /p-limit@6.1.0: resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} @@ -7336,7 +7120,7 @@ packages: nlcst-to-string: 4.0.0 unist-util-modify-children: 4.0.0 unist-util-visit-children: 3.0.0 - vfile: 6.0.2 + vfile: 6.0.1 /parse-ms@4.0.0: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} @@ -7420,22 +7204,6 @@ packages: mlly: 1.7.1 pathe: 1.1.2 - /playwright-core@1.46.0: - resolution: {integrity: sha512-9Y/d5UIwuJk8t3+lhmMSAJyNP1BUC/DqP3cQJDQQL/oWqAiuPTLgy7Q5dzglmTLwcBRdetzgNM/gni7ckfTr6A==} - engines: {node: '>=18'} - hasBin: true - dev: true - - /playwright@1.46.0: - resolution: {integrity: sha512-XYJ5WvfefWONh1uPAUAi0H2xXV5S3vrtcnXe6uAOgdGi3aSpqOSXX08IAjXW34xitfuOJsvXU5anXZxPSEQiJw==} - engines: {node: '>=18'} - hasBin: true - dependencies: - playwright-core: 1.46.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - /postcss-nested@6.0.1(postcss@8.4.39): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} @@ -7685,7 +7453,7 @@ packages: dependencies: '@types/hast': 3.0.4 hast-util-raw: 9.0.4 - vfile: 6.0.2 + vfile: 6.0.1 /rehype-stringify@10.0.0: resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} @@ -7749,7 +7517,7 @@ packages: '@types/mdast': 4.0.4 mdast-util-to-hast: 13.2.0 unified: 11.0.5 - vfile: 6.0.2 + vfile: 6.0.1 /remark-smartypants@2.1.0: resolution: {integrity: sha512-qoF6Vz3BjU2tP6OfZqHOvCU0ACmu/6jhGaINSQRI9mM7wCxNQTKB3JUAN4SVoN2ybElEDTxBIABRep7e569iJw==} @@ -7938,7 +7706,6 @@ packages: chokidar: 3.6.0 immutable: 4.3.6 source-map-js: 1.2.0 - dev: true /sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} @@ -8457,7 +8224,6 @@ packages: /tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - requiresBuild: true /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -8546,10 +8312,6 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /undici-types@6.13.0: - resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==} - dev: true - /unherit@3.0.1: resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==} @@ -8578,7 +8340,7 @@ packages: extend: 3.0.2 is-plain-obj: 4.1.0 trough: 2.2.0 - vfile: 6.0.2 + vfile: 6.0.1 /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} @@ -8713,7 +8475,7 @@ packages: '@unocss/transformer-directives': 0.59.4 '@unocss/transformer-variant-group': 0.59.4 '@unocss/vite': 0.59.4(vite@5.3.4) - vite: 5.3.4(@types/node@20.14.11) + vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) transitivePeerDependencies: - postcss - rollup @@ -8748,7 +8510,7 @@ packages: resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} dependencies: '@types/unist': 3.0.2 - vfile: 6.0.2 + vfile: 6.0.1 /vfile-message@3.1.4: resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} @@ -8793,7 +8555,7 @@ packages: debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.3.4(@types/node@20.14.11) + vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) transitivePeerDependencies: - '@types/node' - less @@ -8823,7 +8585,7 @@ packages: perfect-debounce: 1.0.0 picocolors: 1.0.1 sirv: 2.0.4 - vite: 5.3.4(@types/node@20.14.11) + vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) transitivePeerDependencies: - rollup - supports-color @@ -8840,47 +8602,12 @@ packages: debug: 4.3.5 globrex: 0.1.2 tsconfck: 3.1.0(typescript@5.5.3) - vite: 5.3.4(@types/node@20.14.11) + vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) transitivePeerDependencies: - supports-color - typescript dev: true - /vite@5.3.4(@types/node@20.14.11): - resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 20.14.11 - esbuild: 0.21.5 - postcss: 8.4.39 - rollup: 4.18.1 - optionalDependencies: - fsevents: 2.3.3 - /vite@5.3.4(@types/node@20.14.11)(sass@1.77.6): resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -8916,43 +8643,6 @@ packages: sass: 1.77.6 optionalDependencies: fsevents: 2.3.3 - dev: true - - /vite@5.3.4(@types/node@22.2.0): - resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 22.2.0 - esbuild: 0.21.5 - postcss: 8.4.39 - rollup: 4.18.1 - optionalDependencies: - fsevents: 2.3.3 - dev: true /vitefu@0.2.5(vite@5.3.4): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} @@ -8962,7 +8652,7 @@ packages: vite: optional: true dependencies: - vite: 5.3.4(@types/node@20.14.11) + vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) /vitest@1.6.0(@types/node@20.14.11): resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} @@ -9007,7 +8697,7 @@ packages: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.3.4(@types/node@20.14.11) + vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) vite-node: 1.6.0(@types/node@20.14.11) why-is-node-running: 2.2.2 transitivePeerDependencies: @@ -9343,7 +9033,6 @@ packages: /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - dev: true /yocto-queue@1.1.1: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 53f0e02b..de54ed4f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,6 @@ packages: - 'packages/*' - 'packages/components/*' - - 'test/*' - 'docs/*' - 'extensions/*' + - 'integration' diff --git a/test/cli/README.md b/test/cli/README.md deleted file mode 100644 index b5a8bf62..00000000 --- a/test/cli/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# CLI Tests - -> Tests for verifying `@tutorialkit/cli` works with the actual built template, including their package manager lockfiles. - -## Running - -- `cd ` -- `pnpm cli:build-release` -- `cd test/cli` -- `pnpm test` - From 09e18bb1c10c346427313b555ed3e7359220b59b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Wed, 21 Aug 2024 14:56:49 +0300 Subject: [PATCH 5/9] fix: code review --- .github/workflows/ci.yaml | 16 + .gitignore | 4 +- {test/ui => e2e}/README.md | 0 {test/ui => e2e}/astro.config.ts | 0 {test/ui => e2e}/package.json | 0 {test/ui => e2e}/playwright.config.ts | 0 {test/ui => e2e}/public/logo.svg | 0 {test/ui => e2e}/src/content/config.ts | 0 {test/ui => e2e}/src/content/tutorial/meta.md | 0 .../lesson-and-solution/_files/example.html | 0 .../lesson-and-solution/_files/example.js | 0 .../_solution/example.html | 0 .../lesson-and-solution/_solution/example.js | 0 .../file-tree/lesson-and-solution/content.md | 0 .../content/tutorial/tests/file-tree/meta.md | 0 .../file-tree/no-solution/_files/example.html | 0 .../file-tree/no-solution/_files/example.js | 0 .../tests/file-tree/no-solution/content.md | 0 .../src/content/tutorial/tests/meta.md | 0 .../content/tutorial/tests/navigation/meta.md | 0 .../tests/navigation/page-one/content.md | 0 .../tests/navigation/page-three/content.md | 0 .../tests/navigation/page-two/content.md | 0 .../content/tutorial/tests/preview/meta.md | 0 .../tests/preview/multiple/content.md | 0 .../tutorial/tests/preview/single/content.md | 0 .../tests/terminal/default/content.md | 0 .../content/tutorial/tests/terminal/meta.md | 0 .../tests/terminal/open-by-default/content.md | 0 {test/ui => e2e}/src/env.d.ts | 0 .../src/templates/default/index.mjs | 0 {test/ui => e2e}/test/file-tree.test.ts | 0 {test/ui => e2e}/test/navigation.test.ts | 0 {test/ui => e2e}/test/preview.test.ts | 0 {test/ui => e2e}/test/terminal.test.ts | 0 {test/ui => e2e}/test/utils.ts | 0 {test/ui => e2e}/uno.config.ts | 0 package.json | 4 +- pnpm-lock.yaml | 396 +++++++++++++++++- pnpm-workspace.yaml | 1 + 40 files changed, 400 insertions(+), 21 deletions(-) rename {test/ui => e2e}/README.md (100%) rename {test/ui => e2e}/astro.config.ts (100%) rename {test/ui => e2e}/package.json (100%) rename {test/ui => e2e}/playwright.config.ts (100%) rename {test/ui => e2e}/public/logo.svg (100%) rename {test/ui => e2e}/src/content/config.ts (100%) rename {test/ui => e2e}/src/content/tutorial/meta.md (100%) rename {test/ui => e2e}/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.html (100%) rename {test/ui => e2e}/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.js (100%) rename {test/ui => e2e}/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.html (100%) rename {test/ui => e2e}/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.js (100%) rename {test/ui => e2e}/src/content/tutorial/tests/file-tree/lesson-and-solution/content.md (100%) rename {test/ui => e2e}/src/content/tutorial/tests/file-tree/meta.md (100%) rename {test/ui => e2e}/src/content/tutorial/tests/file-tree/no-solution/_files/example.html (100%) rename {test/ui => e2e}/src/content/tutorial/tests/file-tree/no-solution/_files/example.js (100%) rename {test/ui => e2e}/src/content/tutorial/tests/file-tree/no-solution/content.md (100%) rename {test/ui => e2e}/src/content/tutorial/tests/meta.md (100%) rename {test/ui => e2e}/src/content/tutorial/tests/navigation/meta.md (100%) rename {test/ui => e2e}/src/content/tutorial/tests/navigation/page-one/content.md (100%) rename {test/ui => e2e}/src/content/tutorial/tests/navigation/page-three/content.md (100%) rename {test/ui => e2e}/src/content/tutorial/tests/navigation/page-two/content.md (100%) rename {test/ui => e2e}/src/content/tutorial/tests/preview/meta.md (100%) rename {test/ui => e2e}/src/content/tutorial/tests/preview/multiple/content.md (100%) rename {test/ui => e2e}/src/content/tutorial/tests/preview/single/content.md (100%) rename {test/ui => e2e}/src/content/tutorial/tests/terminal/default/content.md (100%) rename {test/ui => e2e}/src/content/tutorial/tests/terminal/meta.md (100%) rename {test/ui => e2e}/src/content/tutorial/tests/terminal/open-by-default/content.md (100%) rename {test/ui => e2e}/src/env.d.ts (100%) rename {test/ui => e2e}/src/templates/default/index.mjs (100%) rename {test/ui => e2e}/test/file-tree.test.ts (100%) rename {test/ui => e2e}/test/navigation.test.ts (100%) rename {test/ui => e2e}/test/preview.test.ts (100%) rename {test/ui => e2e}/test/terminal.test.ts (100%) rename {test/ui => e2e}/test/utils.ts (100%) rename {test/ui => e2e}/uno.config.ts (100%) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 906958dc..085a5107 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -32,11 +32,27 @@ jobs: - name: Lint run: pnpm lint + - name: Test + run: pnpm test + + test-e2e: + name: Test E2E + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - uses: ./.github/actions/setup-and-build + with: + node-version: ${{ matrix.node-version }} + - name: Install Playwright Dependencies run: pnpm exec playwright install chromium --with-deps + working-directory: e2e - name: Test run: pnpm test + working-directory: e2e docs: name: Docs diff --git a/.gitignore b/.gitignore index 8cf039c0..130572d6 100644 --- a/.gitignore +++ b/.gitignore @@ -23,5 +23,5 @@ tsconfig.tsbuildinfo tsconfig.build.tsbuildinfo .tmp .tmp-* -/test/**/test-results -/test/**/.astro +/e2e/**/test-results +/e2e/**/.astro diff --git a/test/ui/README.md b/e2e/README.md similarity index 100% rename from test/ui/README.md rename to e2e/README.md diff --git a/test/ui/astro.config.ts b/e2e/astro.config.ts similarity index 100% rename from test/ui/astro.config.ts rename to e2e/astro.config.ts diff --git a/test/ui/package.json b/e2e/package.json similarity index 100% rename from test/ui/package.json rename to e2e/package.json diff --git a/test/ui/playwright.config.ts b/e2e/playwright.config.ts similarity index 100% rename from test/ui/playwright.config.ts rename to e2e/playwright.config.ts diff --git a/test/ui/public/logo.svg b/e2e/public/logo.svg similarity index 100% rename from test/ui/public/logo.svg rename to e2e/public/logo.svg diff --git a/test/ui/src/content/config.ts b/e2e/src/content/config.ts similarity index 100% rename from test/ui/src/content/config.ts rename to e2e/src/content/config.ts diff --git a/test/ui/src/content/tutorial/meta.md b/e2e/src/content/tutorial/meta.md similarity index 100% rename from test/ui/src/content/tutorial/meta.md rename to e2e/src/content/tutorial/meta.md diff --git a/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.html b/e2e/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.html similarity index 100% rename from test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.html rename to e2e/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.html diff --git a/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.js b/e2e/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.js similarity index 100% rename from test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.js rename to e2e/src/content/tutorial/tests/file-tree/lesson-and-solution/_files/example.js diff --git a/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.html b/e2e/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.html similarity index 100% rename from test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.html rename to e2e/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.html diff --git a/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.js b/e2e/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.js similarity index 100% rename from test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.js rename to e2e/src/content/tutorial/tests/file-tree/lesson-and-solution/_solution/example.js diff --git a/test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/content.md b/e2e/src/content/tutorial/tests/file-tree/lesson-and-solution/content.md similarity index 100% rename from test/ui/src/content/tutorial/tests/file-tree/lesson-and-solution/content.md rename to e2e/src/content/tutorial/tests/file-tree/lesson-and-solution/content.md diff --git a/test/ui/src/content/tutorial/tests/file-tree/meta.md b/e2e/src/content/tutorial/tests/file-tree/meta.md similarity index 100% rename from test/ui/src/content/tutorial/tests/file-tree/meta.md rename to e2e/src/content/tutorial/tests/file-tree/meta.md diff --git a/test/ui/src/content/tutorial/tests/file-tree/no-solution/_files/example.html b/e2e/src/content/tutorial/tests/file-tree/no-solution/_files/example.html similarity index 100% rename from test/ui/src/content/tutorial/tests/file-tree/no-solution/_files/example.html rename to e2e/src/content/tutorial/tests/file-tree/no-solution/_files/example.html diff --git a/test/ui/src/content/tutorial/tests/file-tree/no-solution/_files/example.js b/e2e/src/content/tutorial/tests/file-tree/no-solution/_files/example.js similarity index 100% rename from test/ui/src/content/tutorial/tests/file-tree/no-solution/_files/example.js rename to e2e/src/content/tutorial/tests/file-tree/no-solution/_files/example.js diff --git a/test/ui/src/content/tutorial/tests/file-tree/no-solution/content.md b/e2e/src/content/tutorial/tests/file-tree/no-solution/content.md similarity index 100% rename from test/ui/src/content/tutorial/tests/file-tree/no-solution/content.md rename to e2e/src/content/tutorial/tests/file-tree/no-solution/content.md diff --git a/test/ui/src/content/tutorial/tests/meta.md b/e2e/src/content/tutorial/tests/meta.md similarity index 100% rename from test/ui/src/content/tutorial/tests/meta.md rename to e2e/src/content/tutorial/tests/meta.md diff --git a/test/ui/src/content/tutorial/tests/navigation/meta.md b/e2e/src/content/tutorial/tests/navigation/meta.md similarity index 100% rename from test/ui/src/content/tutorial/tests/navigation/meta.md rename to e2e/src/content/tutorial/tests/navigation/meta.md diff --git a/test/ui/src/content/tutorial/tests/navigation/page-one/content.md b/e2e/src/content/tutorial/tests/navigation/page-one/content.md similarity index 100% rename from test/ui/src/content/tutorial/tests/navigation/page-one/content.md rename to e2e/src/content/tutorial/tests/navigation/page-one/content.md diff --git a/test/ui/src/content/tutorial/tests/navigation/page-three/content.md b/e2e/src/content/tutorial/tests/navigation/page-three/content.md similarity index 100% rename from test/ui/src/content/tutorial/tests/navigation/page-three/content.md rename to e2e/src/content/tutorial/tests/navigation/page-three/content.md diff --git a/test/ui/src/content/tutorial/tests/navigation/page-two/content.md b/e2e/src/content/tutorial/tests/navigation/page-two/content.md similarity index 100% rename from test/ui/src/content/tutorial/tests/navigation/page-two/content.md rename to e2e/src/content/tutorial/tests/navigation/page-two/content.md diff --git a/test/ui/src/content/tutorial/tests/preview/meta.md b/e2e/src/content/tutorial/tests/preview/meta.md similarity index 100% rename from test/ui/src/content/tutorial/tests/preview/meta.md rename to e2e/src/content/tutorial/tests/preview/meta.md diff --git a/test/ui/src/content/tutorial/tests/preview/multiple/content.md b/e2e/src/content/tutorial/tests/preview/multiple/content.md similarity index 100% rename from test/ui/src/content/tutorial/tests/preview/multiple/content.md rename to e2e/src/content/tutorial/tests/preview/multiple/content.md diff --git a/test/ui/src/content/tutorial/tests/preview/single/content.md b/e2e/src/content/tutorial/tests/preview/single/content.md similarity index 100% rename from test/ui/src/content/tutorial/tests/preview/single/content.md rename to e2e/src/content/tutorial/tests/preview/single/content.md diff --git a/test/ui/src/content/tutorial/tests/terminal/default/content.md b/e2e/src/content/tutorial/tests/terminal/default/content.md similarity index 100% rename from test/ui/src/content/tutorial/tests/terminal/default/content.md rename to e2e/src/content/tutorial/tests/terminal/default/content.md diff --git a/test/ui/src/content/tutorial/tests/terminal/meta.md b/e2e/src/content/tutorial/tests/terminal/meta.md similarity index 100% rename from test/ui/src/content/tutorial/tests/terminal/meta.md rename to e2e/src/content/tutorial/tests/terminal/meta.md diff --git a/test/ui/src/content/tutorial/tests/terminal/open-by-default/content.md b/e2e/src/content/tutorial/tests/terminal/open-by-default/content.md similarity index 100% rename from test/ui/src/content/tutorial/tests/terminal/open-by-default/content.md rename to e2e/src/content/tutorial/tests/terminal/open-by-default/content.md diff --git a/test/ui/src/env.d.ts b/e2e/src/env.d.ts similarity index 100% rename from test/ui/src/env.d.ts rename to e2e/src/env.d.ts diff --git a/test/ui/src/templates/default/index.mjs b/e2e/src/templates/default/index.mjs similarity index 100% rename from test/ui/src/templates/default/index.mjs rename to e2e/src/templates/default/index.mjs diff --git a/test/ui/test/file-tree.test.ts b/e2e/test/file-tree.test.ts similarity index 100% rename from test/ui/test/file-tree.test.ts rename to e2e/test/file-tree.test.ts diff --git a/test/ui/test/navigation.test.ts b/e2e/test/navigation.test.ts similarity index 100% rename from test/ui/test/navigation.test.ts rename to e2e/test/navigation.test.ts diff --git a/test/ui/test/preview.test.ts b/e2e/test/preview.test.ts similarity index 100% rename from test/ui/test/preview.test.ts rename to e2e/test/preview.test.ts diff --git a/test/ui/test/terminal.test.ts b/e2e/test/terminal.test.ts similarity index 100% rename from test/ui/test/terminal.test.ts rename to e2e/test/terminal.test.ts diff --git a/test/ui/test/utils.ts b/e2e/test/utils.ts similarity index 100% rename from test/ui/test/utils.ts rename to e2e/test/utils.ts diff --git a/test/ui/uno.config.ts b/e2e/uno.config.ts similarity index 100% rename from test/ui/uno.config.ts rename to e2e/uno.config.ts diff --git a/package.json b/package.json index 5bfafe2d..fe8e6a9b 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "demo": "pnpm run --filter=demo.tutorialkit.dev dev", "demo:build": "pnpm run build && pnpm run --filter=demo.tutorialkit.dev build", "lint": "eslint \"{packages,docs,extensions,integration}/**/*\"", - "test": "CI=true pnpm run --stream --filter='@tutorialkit/*' test" + "test": "pnpm run --stream --filter='@tutorialkit/*' test --run", + "test:e2e": "pnpm run --filter='./e2e' test" }, "license": "MIT", "packageManager": "pnpm@8.15.6", @@ -30,7 +31,6 @@ "eslint-plugin-astro": "^1.2.3", "husky": "^9.0.11", "is-ci": "^3.0.1", - "playwright": "^1.46.0", "prettier": "^3.3.2", "prettier-plugin-astro": "^0.14.1", "tempfile": "^5.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9b9c5e11..7282e560 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,9 +38,6 @@ importers: is-ci: specifier: ^3.0.1 version: 3.0.1 - playwright: - specifier: ^1.46.0 - version: 1.46.0 prettier: specifier: ^3.3.2 version: 3.3.2 @@ -86,7 +83,7 @@ importers: version: 0.59.4 astro: specifier: ^4.12.0 - version: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) + version: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) fast-glob: specifier: ^3.3.2 version: 3.3.2 @@ -167,6 +164,63 @@ importers: specifier: ^0.59.4 version: 0.59.4(postcss@8.4.39)(vite@5.3.4) + e2e: + devDependencies: + '@astrojs/react': + specifier: ^3.6.0 + version: 3.6.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(vite@5.3.4) + '@iconify-json/ph': + specifier: ^1.1.13 + version: 1.1.13 + '@iconify-json/svg-spinners': + specifier: ^1.1.2 + version: 1.1.2 + '@playwright/test': + specifier: ^1.46.0 + version: 1.46.1 + '@tutorialkit/astro': + specifier: workspace:* + version: link:../packages/astro + '@tutorialkit/components-react': + specifier: workspace:* + version: link:../packages/components/react + '@tutorialkit/runtime': + specifier: workspace:* + version: link:../packages/runtime + '@tutorialkit/theme': + specifier: workspace:* + version: link:../packages/theme + '@tutorialkit/types': + specifier: workspace:* + version: link:../packages/types + '@types/node': + specifier: ^22.2.0 + version: 22.4.2 + '@unocss/reset': + specifier: ^0.59.4 + version: 0.59.4 + '@unocss/transformer-directives': + specifier: ^0.62.0 + version: 0.62.2 + astro: + specifier: ^4.12.0 + version: 4.12.2(@types/node@22.4.2)(typescript@5.5.3) + fast-glob: + specifier: ^3.3.2 + version: 3.3.2 + playwright: + specifier: ^1.46.0 + version: 1.46.1 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + unocss: + specifier: ^0.59.4 + version: 0.59.4(postcss@8.4.39)(vite@5.3.4) + extensions/vscode: dependencies: '@volar/language-core': @@ -277,7 +331,7 @@ importers: version: 1.2.0 astro: specifier: ^4.12.0 - version: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) + version: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) astro-expressive-code: specifier: ^0.35.3 version: 0.35.3(astro@4.12.2) @@ -616,7 +670,7 @@ importers: version: 0.59.4 astro: specifier: ^4.12.0 - version: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) + version: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) fast-glob: specifier: ^3.3.2 version: 3.3.2 @@ -798,7 +852,7 @@ packages: '@astrojs/markdown-remark': 5.1.0 '@mdx-js/mdx': 3.0.1 acorn: 8.12.0 - astro: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) + astro: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) es-module-lexer: 1.5.3 estree-util-visit: 2.0.0 github-slugger: 2.0.0 @@ -2524,6 +2578,10 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + dev: true + /@jridgewell/trace-mapping@0.3.25: resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: @@ -2700,6 +2758,14 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dev: true + /@playwright/test@1.46.1: + resolution: {integrity: sha512-Fq6SwLujA/DOIvNC2EL/SojJnkKf/rAwJ//APpJJHRyMi1PdKrY3Az+4XNQ51N4RTbItbIByQ0jgd1tayq1aeA==} + engines: {node: '>=18'} + hasBin: true + dependencies: + playwright: 1.46.1 + dev: true + /@polka/url@1.0.0-next.25: resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} @@ -3246,6 +3312,12 @@ packages: dependencies: undici-types: 5.26.5 + /@types/node@22.4.2: + resolution: {integrity: sha512-nAvM3Ey230/XzxtyDcJ+VjvlzpzoHwLsF7JaDRfoI0ytO0mVheerNmM45CtA0yOILXwXXxOrcUWH3wltX+7PSw==} + dependencies: + undici-types: 6.19.8 + dev: true + /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} dev: true @@ -3471,7 +3543,7 @@ packages: '@unocss/core': 0.59.4 '@unocss/reset': 0.59.4 '@unocss/vite': 0.59.4(vite@5.3.4) - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - rollup @@ -3506,6 +3578,10 @@ packages: /@unocss/core@0.59.4: resolution: {integrity: sha512-bBZ1sgcAtezQVZ1BST9IS3jqcsTLyqKNjiIf7FTnX3DHpfpYuMDFzSOtmkZDzBleOLO/CtcRWjT0HwTSQAmV0A==} + /@unocss/core@0.62.2: + resolution: {integrity: sha512-86jEFUJ/PSwdb1qqiEi0lWlewfKLQwiH+JAfnh8c2hLjOPVmCkb0nnsYSMh8drmtN5kpk6E06mN0IrKMO7OnvQ==} + dev: true + /@unocss/extractor-arbitrary-variants@0.59.4: resolution: {integrity: sha512-RDe4FgMGJQ+tp9GLvhPHni7Cc2O0lHBRMElVlN8LoXJAdODMICdbrEPGJlEfrc+7x/QgVFoR895KpYJh3hIgGA==} dependencies: @@ -3596,6 +3672,14 @@ packages: '@unocss/core': 0.59.4 magic-string: 0.30.10 + /@unocss/rule-utils@0.62.2: + resolution: {integrity: sha512-0za00pkDHsGZhiXBiZfOuUyT+GjCInPxMXj+QsybRU4UrjJS+d3gAteC34BqNFfDAoKQb9G5q9etXztcNHXQbg==} + engines: {node: '>=14'} + dependencies: + '@unocss/core': 0.62.2 + magic-string: 0.30.11 + dev: true + /@unocss/scope@0.59.4: resolution: {integrity: sha512-wBQJ39kw4Tfj4km7AoGvSIobPKVnRZVsgc0bema5Y0PL3g1NeVQ/LopBI2zEJWdpxGXUWxSDsXm7BZo6qVlD/A==} @@ -3626,6 +3710,14 @@ packages: '@unocss/rule-utils': 0.59.4 css-tree: 2.3.1 + /@unocss/transformer-directives@0.62.2: + resolution: {integrity: sha512-5ZGTmsXkAkFd7pHjHkGy6LGgxhh6bPbZ3jLltf98OhgBZH558y9iui6LKq3n2LpUsSZox6ey3yh1AibvakQeeg==} + dependencies: + '@unocss/core': 0.62.2 + '@unocss/rule-utils': 0.62.2 + css-tree: 2.3.1 + dev: true + /@unocss/transformer-variant-group@0.59.4: resolution: {integrity: sha512-9XLixxn1NRgP62Kj4R/NC/rpqhql5F2s6ulJ8CAMTEbd/NylVhEANluPGDVUGcLJ4cj6E02hFa8C1PLGSm7/xw==} dependencies: @@ -3646,7 +3738,7 @@ packages: chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.10 - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - rollup @@ -3661,7 +3753,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - supports-color @@ -4012,7 +4104,7 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^3.3.0 dependencies: - astro: 4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3) + astro: 4.12.2(@types/node@20.14.11)(typescript@5.5.3) rehype-expressive-code: 0.35.3 /astro@4.12.2(@types/node@20.14.11)(sass@1.77.6)(typescript@5.5.3): @@ -4094,6 +4186,168 @@ packages: - supports-color - terser - typescript + dev: true + + /astro@4.12.2(@types/node@20.14.11)(typescript@5.5.3): + resolution: {integrity: sha512-l6OmqlL+FiuSi9x6F+EGZitteOznq1JffOil7st7cdqeMCTEIym4oagI1a6zp6QekliKWEEZWdplGhgh1k1f7Q==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + dependencies: + '@astrojs/compiler': 2.9.1 + '@astrojs/internal-helpers': 0.4.1 + '@astrojs/markdown-remark': 5.2.0 + '@astrojs/telemetry': 3.1.0 + '@babel/core': 7.24.9 + '@babel/generator': 7.24.10 + '@babel/parser': 7.24.8 + '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.24.9) + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + '@types/babel__core': 7.20.5 + '@types/cookie': 0.6.0 + acorn: 8.12.1 + aria-query: 5.3.0 + axobject-query: 4.1.0 + boxen: 7.1.1 + chokidar: 3.6.0 + ci-info: 4.0.0 + clsx: 2.1.1 + common-ancestor-path: 1.0.1 + cookie: 0.6.0 + cssesc: 3.0.0 + debug: 4.3.5 + deterministic-object-hash: 2.0.2 + devalue: 5.0.0 + diff: 5.2.0 + dlv: 1.1.3 + dset: 3.1.3 + es-module-lexer: 1.5.4 + esbuild: 0.21.5 + estree-walker: 3.0.3 + execa: 8.0.1 + fast-glob: 3.3.2 + flattie: 1.1.1 + github-slugger: 2.0.0 + gray-matter: 4.0.3 + html-escaper: 3.0.3 + http-cache-semantics: 4.1.1 + js-yaml: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.10 + mrmime: 2.0.0 + ora: 8.0.1 + p-limit: 6.1.0 + p-queue: 8.0.1 + path-to-regexp: 6.2.2 + preferred-pm: 4.0.0 + prompts: 2.4.2 + rehype: 13.0.1 + semver: 7.6.2 + shiki: 1.11.0 + string-width: 7.2.0 + strip-ansi: 7.1.0 + tsconfck: 3.1.1(typescript@5.5.3) + unist-util-visit: 5.0.0 + vfile: 6.0.2 + vite: 5.3.4(@types/node@20.14.11) + vitefu: 0.2.5(vite@5.3.4) + which-pm: 3.0.0 + yargs-parser: 21.1.1 + zod: 3.23.8 + zod-to-json-schema: 3.23.1(zod@3.23.8) + optionalDependencies: + sharp: 0.33.4 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - typescript + + /astro@4.12.2(@types/node@22.4.2)(typescript@5.5.3): + resolution: {integrity: sha512-l6OmqlL+FiuSi9x6F+EGZitteOznq1JffOil7st7cdqeMCTEIym4oagI1a6zp6QekliKWEEZWdplGhgh1k1f7Q==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + dependencies: + '@astrojs/compiler': 2.9.1 + '@astrojs/internal-helpers': 0.4.1 + '@astrojs/markdown-remark': 5.2.0 + '@astrojs/telemetry': 3.1.0 + '@babel/core': 7.24.9 + '@babel/generator': 7.24.10 + '@babel/parser': 7.24.8 + '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.24.9) + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + '@types/babel__core': 7.20.5 + '@types/cookie': 0.6.0 + acorn: 8.12.1 + aria-query: 5.3.0 + axobject-query: 4.1.0 + boxen: 7.1.1 + chokidar: 3.6.0 + ci-info: 4.0.0 + clsx: 2.1.1 + common-ancestor-path: 1.0.1 + cookie: 0.6.0 + cssesc: 3.0.0 + debug: 4.3.5 + deterministic-object-hash: 2.0.2 + devalue: 5.0.0 + diff: 5.2.0 + dlv: 1.1.3 + dset: 3.1.3 + es-module-lexer: 1.5.4 + esbuild: 0.21.5 + estree-walker: 3.0.3 + execa: 8.0.1 + fast-glob: 3.3.2 + flattie: 1.1.1 + github-slugger: 2.0.0 + gray-matter: 4.0.3 + html-escaper: 3.0.3 + http-cache-semantics: 4.1.1 + js-yaml: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.10 + mrmime: 2.0.0 + ora: 8.0.1 + p-limit: 6.1.0 + p-queue: 8.0.1 + path-to-regexp: 6.2.2 + preferred-pm: 4.0.0 + prompts: 2.4.2 + rehype: 13.0.1 + semver: 7.6.2 + shiki: 1.11.0 + string-width: 7.2.0 + strip-ansi: 7.1.0 + tsconfck: 3.1.1(typescript@5.5.3) + unist-util-visit: 5.0.0 + vfile: 6.0.2 + vite: 5.3.4(@types/node@22.4.2) + vitefu: 0.2.5(vite@5.3.4) + which-pm: 3.0.0 + yargs-parser: 21.1.1 + zod: 3.23.8 + zod-to-json-schema: 3.23.1(zod@3.23.8) + optionalDependencies: + sharp: 0.33.4 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - typescript + dev: true /astrojs-compiler-sync@1.0.0(@astrojs/compiler@2.9.1): resolution: {integrity: sha512-IM6FxpMoBxkGGdKppkFHNQIC9Wge7jspG2MIJff8DOhG41USNJLxJfxRm7wnkTKWlYK5Y1YFFNYr2vUUKkI8sw==} @@ -5389,6 +5643,14 @@ packages: universalify: 2.0.1 dev: true + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -5824,6 +6086,7 @@ packages: /immutable@4.3.6: resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} + dev: true /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -6242,6 +6505,12 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + /markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -7204,6 +7473,22 @@ packages: mlly: 1.7.1 pathe: 1.1.2 + /playwright-core@1.46.1: + resolution: {integrity: sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==} + engines: {node: '>=18'} + hasBin: true + dev: true + + /playwright@1.46.1: + resolution: {integrity: sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==} + engines: {node: '>=18'} + hasBin: true + dependencies: + playwright-core: 1.46.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /postcss-nested@6.0.1(postcss@8.4.39): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} @@ -7706,6 +7991,7 @@ packages: chokidar: 3.6.0 immutable: 4.3.6 source-map-js: 1.2.0 + dev: true /sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} @@ -8312,6 +8598,10 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + dev: true + /unherit@3.0.1: resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==} @@ -8475,7 +8765,7 @@ packages: '@unocss/transformer-directives': 0.59.4 '@unocss/transformer-variant-group': 0.59.4 '@unocss/vite': 0.59.4(vite@5.3.4) - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - postcss - rollup @@ -8555,7 +8845,7 @@ packages: debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - '@types/node' - less @@ -8585,7 +8875,7 @@ packages: perfect-debounce: 1.0.0 picocolors: 1.0.1 sirv: 2.0.4 - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - rollup - supports-color @@ -8602,12 +8892,47 @@ packages: debug: 4.3.5 globrex: 0.1.2 tsconfck: 3.1.0(typescript@5.5.3) - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) transitivePeerDependencies: - supports-color - typescript dev: true + /vite@5.3.4(@types/node@20.14.11): + resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.14.11 + esbuild: 0.21.5 + postcss: 8.4.39 + rollup: 4.18.1 + optionalDependencies: + fsevents: 2.3.3 + /vite@5.3.4(@types/node@20.14.11)(sass@1.77.6): resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -8643,6 +8968,43 @@ packages: sass: 1.77.6 optionalDependencies: fsevents: 2.3.3 + dev: true + + /vite@5.3.4(@types/node@22.4.2): + resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 22.4.2 + esbuild: 0.21.5 + postcss: 8.4.39 + rollup: 4.18.1 + optionalDependencies: + fsevents: 2.3.3 + dev: true /vitefu@0.2.5(vite@5.3.4): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} @@ -8652,7 +9014,7 @@ packages: vite: optional: true dependencies: - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) /vitest@1.6.0(@types/node@20.14.11): resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} @@ -8697,7 +9059,7 @@ packages: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.6) + vite: 5.3.4(@types/node@20.14.11) vite-node: 1.6.0(@types/node@20.14.11) why-is-node-running: 2.2.2 transitivePeerDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index de54ed4f..120900a4 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,3 +4,4 @@ packages: - 'docs/*' - 'extensions/*' - 'integration' + - 'e2e' From c42f484ab3b5bca957abde63e3e6e584523b2b2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Wed, 21 Aug 2024 15:03:03 +0300 Subject: [PATCH 6/9] fix: code review --- e2e/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/package.json b/e2e/package.json index 07607c9c..0e344c0c 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -1,5 +1,5 @@ { - "name": "@tutorialkit/test-ui", + "name": "tutorialkit-e2e", "private": true, "type": "module", "scripts": { From 2a3d2efd84aa9028be27a24ee98470e94710dfcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Wed, 21 Aug 2024 15:08:32 +0300 Subject: [PATCH 7/9] fix: code review --- .github/workflows/ci.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 085a5107..d3e40f1b 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -43,8 +43,6 @@ jobs: uses: actions/checkout@v4 - uses: ./.github/actions/setup-and-build - with: - node-version: ${{ matrix.node-version }} - name: Install Playwright Dependencies run: pnpm exec playwright install chromium --with-deps From f0705dd79ea39b5920e0271065dcba2ec43f86d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Wed, 21 Aug 2024 16:14:08 +0300 Subject: [PATCH 8/9] fix: code review --- e2e/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/e2e/package.json b/e2e/package.json index 0e344c0c..7436ff52 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -4,7 +4,6 @@ "type": "module", "scripts": { "dev": "astro dev", - "start": "astro dev", "preview": "astro build && astro preview", "test": "playwright test", "test:ui": "pnpm run test --ui" From 5009a4eb4568bc853b48da82518307764bebe248 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Wed, 21 Aug 2024 16:18:53 +0300 Subject: [PATCH 9/9] fix: code review --- .github/workflows/ci.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d3e40f1b..d40f7a80 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -45,12 +45,10 @@ jobs: - uses: ./.github/actions/setup-and-build - name: Install Playwright Dependencies - run: pnpm exec playwright install chromium --with-deps - working-directory: e2e + run: pnpm --filter=tutorialkit-e2e exec playwright install chromium --with-deps - name: Test - run: pnpm test - working-directory: e2e + run: pnpm test:e2e docs: name: Docs