Compare commits
	
		
			64 Commits
		
	
	
		
			kurt-refac
			...
			kurt-rever
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| c03eaecfe7 | |||
| bf3815086a | |||
| 115e6baa53 | |||
| e1406012b4 | |||
| 46d335f916 | |||
| c84c0b0fef | |||
| c0afbff377 | |||
| 88510e30b2 | |||
| f9a07627d8 | |||
| 3ad3c56b2c | |||
| 30e417dffd | |||
| 631513443d | |||
| e7aebeac12 | |||
| 0c478680cb | |||
| a24789c236 | |||
| 3035ad16fc | |||
| 74faf0461c | |||
| 47e472e984 | |||
| cd91774881 | |||
| 88cd27425e | |||
| a284a270b7 | |||
| e2f5ad47a2 | |||
| 2a3693651a | |||
| 9ca49c6366 | |||
| 2a2e4a8b63 | |||
| 258bce8adc | |||
| a3c0a2b03b | |||
| 2ed2e9cf86 | |||
| 438d1ec746 | |||
| 5112b48324 | |||
| 8cb17a8936 | |||
| 125207f60c | |||
| 6dfadbea18 | |||
| 0d48dff151 | |||
| f74b436e3d | |||
| bb3f9e0377 | |||
| 02be831c67 | |||
| 2e72f235dd | |||
| 3949b6acf4 | |||
| 168f4fc545 | |||
| 85541c76f5 | |||
| 7ed29e2ce4 | |||
| 2a35dd2398 | |||
| 790af3842c | |||
| 37bb696a30 | |||
| e50de134b1 | |||
| 9a437ca973 | |||
| 30bcf21912 | |||
| 9ceb247fcd | |||
| 6303130e08 | |||
| 47b1c1654a | |||
| e53bb07843 | |||
| 3bf30dd676 | |||
| 9d0f06b58f | |||
| 20777a60aa | |||
| 71c5451e3a | |||
| fd21850e48 | |||
| 294040b618 | |||
| ca95427f21 | |||
| 9d7fd02710 | |||
| 27c6f75a49 | |||
| 579151a9bb | |||
| 90f0f13d26 | |||
| 1a23d96f7e | 
| @ -1,2 +1,3 @@ | ||||
| src/wasm-lib/* | ||||
| *.typegen.ts | ||||
| packages/codemirror-lsp-client/dist/* | ||||
|  | ||||
							
								
								
									
										59
									
								
								.github/ci-cd-scripts/playwright-browser-chrome.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										59
									
								
								.github/ci-cd-scripts/playwright-browser-chrome.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @ -0,0 +1,59 @@ | ||||
| # bash strict mode | ||||
| set -euo pipefail | ||||
|  | ||||
| if [[ ! -f "test-results/.last-run.json" ]]; then | ||||
|     # if no last run artifact, than run plawright normally | ||||
|     echo "run playwright normally" | ||||
|     if [[ "$3" == "ubuntu-latest" ]]; then | ||||
|         yarn test:playwright:browser:chrome:ubuntu -- --shard=$1/$2 || true | ||||
|     elif [[ "$3" == "windows-latest" ]]; then | ||||
|         yarn test:playwright:browser:chrome:windows -- --shard=$1/$2 || true | ||||
|     else | ||||
|         echo "Do not run playwright. Unable to detect os runtime." | ||||
|         exit 1 | ||||
|     fi | ||||
|     # # send to axiom | ||||
|     node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1 | ||||
| fi | ||||
|  | ||||
| retry=1 | ||||
| max_retrys=4 | ||||
|  | ||||
| # retry failed tests, doing our own retries because using inbuilt playwright retries causes connection issues | ||||
| while [[ $retry -le $max_retrys ]]; do | ||||
|     if [[ -f "test-results/.last-run.json" ]]; then | ||||
|         failed_tests=$(jq '.failedTests | length' test-results/.last-run.json) | ||||
|         if [[ $failed_tests -gt 0 ]]; then | ||||
|             echo "retried=true" >>$GITHUB_OUTPUT | ||||
|             echo "run playwright with last failed tests and retry $retry" | ||||
|             if [[ "$3" == "ubuntu-latest" ]]; then | ||||
|                 yarn test:playwright:browser:chrome:ubuntu -- --last-failed || true | ||||
|             elif [[ "$3" == "windows-latest" ]]; then | ||||
|                 yarn test:playwright:browser:chrome:windows -- --last-failed || true | ||||
|             else | ||||
|                 echo "Do not run playwright. Unable to detect os runtime." | ||||
|                 exit 1 | ||||
|             fi | ||||
|             # send to axiom | ||||
|             node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1 | ||||
|             retry=$((retry + 1)) | ||||
|         else | ||||
|             echo "retried=false" >>$GITHUB_OUTPUT | ||||
|             exit 0 | ||||
|         fi | ||||
|     else | ||||
|         echo "retried=false" >>$GITHUB_OUTPUT | ||||
|         exit 0 | ||||
|     fi | ||||
| done | ||||
|  | ||||
| echo "retried=false" >>$GITHUB_OUTPUT | ||||
|  | ||||
| if [[ -f "test-results/.last-run.json" ]]; then | ||||
|     failed_tests=$(jq '.failedTests | length' test-results/.last-run.json) | ||||
|     if [[ $failed_tests -gt 0 ]]; then | ||||
|         # if it still fails after 3 retrys, then fail the job | ||||
|         exit 1 | ||||
|     fi | ||||
| fi | ||||
| exit 0 | ||||
							
								
								
									
										63
									
								
								.github/ci-cd-scripts/playwright-electron.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										63
									
								
								.github/ci-cd-scripts/playwright-electron.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @ -0,0 +1,63 @@ | ||||
| # bash strict mode | ||||
| set -euo pipefail | ||||
|  | ||||
| if [[ ! -f "test-results/.last-run.json" ]]; then | ||||
|     # if no last run artifact, than run plawright normally | ||||
|     echo "run playwright normally" | ||||
|         if [[ "$1" == "ubuntu-latest" ]]; then | ||||
|             xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:playwright:electron:ubuntu || true | ||||
|         elif [[ "$1" == "windows-latest" ]]; then | ||||
|             yarn test:playwright:electron:windows || true | ||||
|         elif [[ "$1" == "macos-14" ]]; then | ||||
|             yarn test:playwright:electron:macos || true | ||||
|         else | ||||
|             echo "Do not run playwright. Unable to detect os runtime." | ||||
|             exit 1 | ||||
|         fi | ||||
|         # # send to axiom | ||||
|         node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1 | ||||
| fi | ||||
|  | ||||
| retry=1 | ||||
| max_retrys=2 | ||||
|  | ||||
| # retry failed tests, doing our own retries because using inbuilt playwright retries causes connection issues | ||||
| while [[ $retry -le $max_retrys ]]; do | ||||
|     if [[ -f "test-results/.last-run.json" ]]; then | ||||
|         failed_tests=$(jq '.failedTests | length' test-results/.last-run.json) | ||||
|         if [[ $failed_tests -gt 0 ]]; then | ||||
|             echo "retried=true" >>$GITHUB_OUTPUT | ||||
|             echo "run playwright with last failed tests and retry $retry" | ||||
|             if [[ "$1" == "ubuntu-latest" ]]; then | ||||
|                 xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:playwright:electron:ubuntu -- --last-failed || true | ||||
|             elif [[ "$1" == "windows-latest" ]]; then | ||||
|                 yarn test:playwright:electron:windows -- --last-failed || true | ||||
|             elif [[ "$1" == "macos-14" ]]; then | ||||
|                 yarn test:playwright:electron:macos -- --last-failed || true | ||||
|             else | ||||
|                 echo "Do not run playwright. Unable to detect os runtime." | ||||
|                 exit 1 | ||||
|             fi | ||||
|             # send to axiom | ||||
|             node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1 | ||||
|             retry=$((retry + 1)) | ||||
|         else | ||||
|             echo "retried=false" >>$GITHUB_OUTPUT | ||||
|             exit 0 | ||||
|         fi | ||||
|     else | ||||
|         echo "retried=false" >>$GITHUB_OUTPUT | ||||
|         exit 0 | ||||
|     fi | ||||
| done | ||||
|  | ||||
| echo "retried=false" >>$GITHUB_OUTPUT | ||||
|  | ||||
| if [[ -f "test-results/.last-run.json" ]]; then | ||||
|     failed_tests=$(jq '.failedTests | length' test-results/.last-run.json) | ||||
|     if [[ $failed_tests -gt 0 ]]; then | ||||
|         # if it still fails after 3 retrys, then fail the job | ||||
|         exit 1 | ||||
|     fi | ||||
| fi | ||||
| exit 0 | ||||
							
								
								
									
										77
									
								
								.github/workflows/build-test-publish-apps.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										77
									
								
								.github/workflows/build-test-publish-apps.yml
									
									
									
									
										vendored
									
									
								
							| @ -51,8 +51,6 @@ jobs: | ||||
|         run: | | ||||
|           VERSION=$(date +'%-y.%-m.%-d') yarn bump-jsons | ||||
|  | ||||
|       # TODO: see if we need to inject updater nightly URL here https://dl.zoo.dev/releases/modeling-app/nightly/last_update.json | ||||
|  | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           name: prepared-files | ||||
| @ -63,12 +61,25 @@ jobs: | ||||
|       - id: export_version | ||||
|         run: echo "version=`cat package.json | jq -r '.version'`" >> "$GITHUB_OUTPUT" | ||||
|  | ||||
|       - name: Prepare electron-builder.yml file for nightly | ||||
|         if: ${{ github.event_name == 'schedule' }} | ||||
|         run: | | ||||
|           yq -i '.publish[0].url = "https://dl.zoo.dev/releases/modeling-app/nightly"' electron-builder.yml | ||||
|  | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         if: ${{ github.event_name == 'schedule' }} | ||||
|         with: | ||||
|           name: prepared-files-nightly | ||||
|           path: | | ||||
|             electron-builder.yml | ||||
|  | ||||
|       - name: Prepare electron-builder.yml file for updater test | ||||
|         if: ${{ env.CUT_RELEASE_PR == 'true' }} | ||||
|         run: | | ||||
|           yq -i '.publish[0].url = "https://dl.zoo.dev/releases/modeling-app/updater-test"' electron-builder.yml | ||||
|  | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         if: ${{ env.CUT_RELEASE_PR == 'true' }} | ||||
|         with: | ||||
|           name: prepared-files-updater-test | ||||
|           path: | | ||||
| @ -108,6 +119,16 @@ jobs: | ||||
|           mkdir src/wasm-lib/pkg | ||||
|           cp prepared-files/src/wasm-lib/pkg/wasm_lib* src/wasm-lib/pkg | ||||
|  | ||||
|       - uses: actions/download-artifact@v3 | ||||
|         if: ${{ github.event_name == 'schedule' }} | ||||
|         name: prepared-files-nightly | ||||
|  | ||||
|       - name: Copy updated electron-builder.yml file for nightly build | ||||
|         if: ${{ github.event_name == 'schedule' }} | ||||
|         run: | | ||||
|           ls -R prepared-files-nightly | ||||
|           cp prepared-files-nightly/electron-builder.yml electron-builder.yml | ||||
|  | ||||
|       - name: Sync node version and setup cache | ||||
|         uses: actions/setup-node@v4 | ||||
|         with: | ||||
| @ -152,11 +173,17 @@ jobs: | ||||
|  | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           name: out-${{ matrix.os }} | ||||
|           name: out-arm64-${{ matrix.os }} | ||||
|           path: | | ||||
|             out/Zoo*.* | ||||
|             out/Zoo*arm64*.* | ||||
|             out/latest*.yml | ||||
|  | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           name: out-x64-${{ matrix.os }} | ||||
|           path: | | ||||
|             out/Zoo*x*64*.* | ||||
|  | ||||
|       # TODO: add the 'Build for Mac TestFlight (nightly)' stage back | ||||
|  | ||||
|       - uses: actions/download-artifact@v3 | ||||
| @ -176,10 +203,16 @@ jobs: | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         if: ${{ env.CUT_RELEASE_PR == 'true' }} | ||||
|         with: | ||||
|           name: updater-test-${{ matrix.os }} | ||||
|           name: updater-test-arm64-${{ matrix.os }} | ||||
|           path: | | ||||
|             out/Zoo*.* | ||||
|             out/latest*.yml | ||||
|             out/Zoo*arm64*.* | ||||
|  | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         if: ${{ env.CUT_RELEASE_PR == 'true' }} | ||||
|         with: | ||||
|           name: updater-test-x64-${{ matrix.os }} | ||||
|           path: | | ||||
|             out/Zoo*x64*.* | ||||
|  | ||||
|  | ||||
|   publish-apps-release: | ||||
| @ -201,17 +234,32 @@ jobs: | ||||
|  | ||||
|       - uses: actions/download-artifact@v3 | ||||
|         with: | ||||
|           name: out-windows-2022 | ||||
|           name: out-arm64-windows-2022 | ||||
|           path: out | ||||
|  | ||||
|       - uses: actions/download-artifact@v3 | ||||
|         with: | ||||
|           name: out-macos-14 | ||||
|           name: out-x64-windows-2022 | ||||
|           path: out | ||||
|  | ||||
|       - uses: actions/download-artifact@v3 | ||||
|         with: | ||||
|           name: out-ubuntu-22.04 | ||||
|           name: out-arm64-macos-14 | ||||
|           path: out | ||||
|  | ||||
|       - uses: actions/download-artifact@v3 | ||||
|         with: | ||||
|           name: out-x64-macos-14 | ||||
|           path: out | ||||
|  | ||||
|       - uses: actions/download-artifact@v3 | ||||
|         with: | ||||
|           name: out-arm64-ubuntu-22.04 | ||||
|           path: out | ||||
|  | ||||
|       - uses: actions/download-artifact@v3 | ||||
|         with: | ||||
|           name: out-x64-ubuntu-22.04 | ||||
|           path: out | ||||
|  | ||||
|       - name: Generate the download static endpoint | ||||
| @ -258,7 +306,7 @@ jobs: | ||||
|         run: "ls -R out" | ||||
|  | ||||
|       - name: Authenticate to Google Cloud | ||||
|         uses: 'google-github-actions/auth@v2.1.5' | ||||
|         uses: 'google-github-actions/auth@v2.1.6' | ||||
|         with: | ||||
|           credentials_json: '${{ secrets.GOOGLE_CLOUD_DL_SA }}' | ||||
|  | ||||
| @ -295,7 +343,12 @@ jobs: | ||||
|         with: | ||||
|           files: 'out/Zoo*' | ||||
|  | ||||
|       # TODO: Add GitHub publisher | ||||
|       - name: Invalidate bucket cache on latest*.yml and last_download.json files | ||||
|         run: | | ||||
|           gcloud compute url-maps invalidate-cdn-cache dl-url-map --path="/releases/modeling-app/last_download.json" --async | ||||
|           gcloud compute url-maps invalidate-cdn-cache dl-url-map --path="/releases/modeling-app/latest-linux-arm64.yml" --async | ||||
|           gcloud compute url-maps invalidate-cdn-cache dl-url-map --path="/releases/modeling-app/latest-mac.yml" --async | ||||
|           gcloud compute url-maps invalidate-cdn-cache dl-url-map --path="/releases/modeling-app/latest.yml" --async | ||||
|  | ||||
|   announce_release: | ||||
|     needs: [publish-apps-release] | ||||
|  | ||||
							
								
								
									
										2
									
								
								.github/workflows/cargo-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/cargo-test.yml
									
									
									
									
										vendored
									
									
								
							| @ -4,6 +4,7 @@ on: | ||||
|       - main | ||||
|     paths: | ||||
|       - 'src/wasm-lib/**.rs' | ||||
|       - 'src/wasm-lib/**.hbs' | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
| @ -13,6 +14,7 @@ on: | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - 'src/wasm-lib/**.rs' | ||||
|       - 'src/wasm-lib/**.hbs' | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| name: Playwright Tests | ||||
| name: E2E Tests | ||||
| on: | ||||
|   push: | ||||
|     branches: [ main ] | ||||
| @ -33,8 +33,9 @@ jobs: | ||||
|             rust: | ||||
|               - 'src/wasm-lib/**' | ||||
| 
 | ||||
|   playwright-chrome: | ||||
|   browser: | ||||
|     timeout-minutes: ${{ matrix.os == 'macos-14' && 60 || 50 }} | ||||
|     name: playwright:browser:${{ matrix.os }} ${{ matrix.shardIndex }} ${{ matrix.shardTotal }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
| @ -188,48 +189,7 @@ jobs: | ||||
|       if: ${{ !cancelled() && (success() || failure()) }} | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [[ ! -f "test-results/.last-run.json" ]]; then | ||||
|             # if no last run artifact, than run plawright normally | ||||
|             echo "run playwright normally" | ||||
|             yarn playwright test --project="Google Chrome" --config=playwright.ci.config.ts --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} --grep-invert="@snapshot|@electron" || true | ||||
|             # # send to axiom | ||||
|             node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1 | ||||
|         fi | ||||
| 
 | ||||
|         retry=1 | ||||
|         max_retrys=4 | ||||
| 
 | ||||
|         # retry failed tests, doing our own retries because using inbuilt playwright retries causes connection issues | ||||
|         while [[ $retry -le $max_retrys ]]; do | ||||
|             if [[ -f "test-results/.last-run.json" ]]; then | ||||
|                 failed_tests=$(jq '.failedTests | length' test-results/.last-run.json) | ||||
|                 if [[ $failed_tests -gt 0 ]]; then | ||||
|                     echo "retried=true" >>$GITHUB_OUTPUT | ||||
|                     echo "run playwright with last failed tests and retry $retry" | ||||
|                     yarn playwright test --project="Google Chrome" --config=playwright.ci.config.ts --last-failed --grep-invert="@snapshot|@electron" || true | ||||
|                     # send to axiom | ||||
|                     node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1 | ||||
|                     retry=$((retry + 1)) | ||||
|                 else | ||||
|                     echo "retried=false" >>$GITHUB_OUTPUT | ||||
|                     exit 0 | ||||
|                 fi | ||||
|             else | ||||
|                 echo "retried=false" >>$GITHUB_OUTPUT | ||||
|                 exit 0 | ||||
|             fi | ||||
|         done | ||||
| 
 | ||||
|         echo "retried=false" >>$GITHUB_OUTPUT | ||||
| 
 | ||||
|         if [[ -f "test-results/.last-run.json" ]]; then | ||||
|             failed_tests=$(jq '.failedTests | length' test-results/.last-run.json) | ||||
|             if [[ $failed_tests -gt 0 ]]; then | ||||
|                 # if it still fails after 3 retrys, then fail the job | ||||
|                 exit 1 | ||||
|             fi | ||||
|         fi | ||||
|         exit 0 | ||||
|         .github/ci-cd-scripts/playwright-browser-chrome.sh ${{matrix.shardIndex}} ${{matrix.shardTotal}} ${{matrix.os}} | ||||
|       env: | ||||
|         CI: true | ||||
|         FAIL_ON_CONSOLE_ERRORS: true | ||||
| @ -258,7 +218,8 @@ jobs: | ||||
|         overwrite: true | ||||
| 
 | ||||
| 
 | ||||
|   playwright-electron: | ||||
|   electron: | ||||
|     name: playwright:electron:${{matrix.os}} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
| @ -359,56 +320,7 @@ jobs: | ||||
|       if: ${{ !cancelled() && (success() || failure()) }} | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [[ ! -f "test-results/.last-run.json" ]]; then | ||||
|             # if no last run artifact, than run plawright normally | ||||
|             echo "run playwright normally" | ||||
|             if [[ "$IS_UBUNTU" == "true" ]]; then | ||||
|               xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn playwright test --config=playwright.electron.config.ts --grep=@electron || true | ||||
|             else | ||||
|               yarn playwright test --config=playwright.electron.config.ts --grep=@electron || true | ||||
|             fi | ||||
|             # # send to axiom | ||||
|             node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1 | ||||
|         fi | ||||
| 
 | ||||
|         retry=1 | ||||
|         max_retrys=2 | ||||
| 
 | ||||
|         # retry failed tests, doing our own retries because using inbuilt playwright retries causes connection issues | ||||
|         while [[ $retry -le $max_retrys ]]; do | ||||
|             if [[ -f "test-results/.last-run.json" ]]; then | ||||
|                 failed_tests=$(jq '.failedTests | length' test-results/.last-run.json) | ||||
|                 if [[ $failed_tests -gt 0 ]]; then | ||||
|                     echo "retried=true" >>$GITHUB_OUTPUT | ||||
|                     echo "run playwright with last failed tests and retry $retry" | ||||
|                     if [[ "$IS_UBUNTU" == "true" ]]; then | ||||
|                       xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn playwright test --config=playwright.electron.config.ts --last-failed --grep=@electron || true | ||||
|                     else | ||||
|                       yarn playwright test --config=playwright.electron.config.ts --grep=@electron || true | ||||
|                     fi | ||||
|                     # send to axiom | ||||
|                     node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1 | ||||
|                     retry=$((retry + 1)) | ||||
|                 else | ||||
|                     echo "retried=false" >>$GITHUB_OUTPUT | ||||
|                     exit 0 | ||||
|                 fi | ||||
|             else | ||||
|                 echo "retried=false" >>$GITHUB_OUTPUT | ||||
|                 exit 0 | ||||
|             fi | ||||
|         done | ||||
| 
 | ||||
|         echo "retried=false" >>$GITHUB_OUTPUT | ||||
| 
 | ||||
|         if [[ -f "test-results/.last-run.json" ]]; then | ||||
|             failed_tests=$(jq '.failedTests | length' test-results/.last-run.json) | ||||
|             if [[ $failed_tests -gt 0 ]]; then | ||||
|                 # if it still fails after 3 retrys, then fail the job | ||||
|                 exit 1 | ||||
|             fi | ||||
|         fi | ||||
|         exit 0 | ||||
|         .github/ci-cd-scripts/playwright-electron.sh ${{ matrix.os }} | ||||
|       env: | ||||
|         CI: true | ||||
|         FAIL_ON_CONSOLE_ERRORS: true | ||||
							
								
								
									
										2
									
								
								.github/workflows/generate-website-docs.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/generate-website-docs.yml
									
									
									
									
										vendored
									
									
								
							| @ -38,8 +38,10 @@ jobs: | ||||
|           mkdir -p documentation/content/pages/docs/kcl/ | ||||
|           # cleanup old | ||||
|           rm -rf documentation/content/pages/docs/kcl/*.md | ||||
|           rm -rf documentation/content/pages/docs/kcl/types | ||||
|           # move new | ||||
|           mv -f docs/kcl/*.md documentation/content/pages/docs/kcl/ | ||||
|           mv -f docs/kcl/types documentation/content/pages/docs/kcl/ | ||||
|       - name: commit the changes in the docs repo | ||||
|         shell: bash | ||||
|         run: | | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| name: build-test-web | ||||
| name: Static Analysis | ||||
| 
 | ||||
| on: | ||||
|   pull_request: | ||||
| @ -16,7 +16,7 @@ permissions: | ||||
|   actions: read | ||||
| 
 | ||||
| jobs: | ||||
|   check-format: | ||||
|   yarn-fmt-check: | ||||
|     runs-on: 'ubuntu-22.04' | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
| @ -27,7 +27,23 @@ jobs: | ||||
|       - run: yarn install | ||||
|       - run: yarn fmt-check | ||||
| 
 | ||||
|   check-types: | ||||
|   yarn-build-wasm: | ||||
|     runs-on: ubuntu-22.04 | ||||
| 
 | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/setup-node@v4 | ||||
|         with: | ||||
|           node-version-file: '.nvmrc' | ||||
|           cache: 'yarn' | ||||
|       - run: yarn install | ||||
|       - uses: Swatinem/rust-cache@v2 | ||||
|         with: | ||||
|           workspaces: './src/wasm-lib' | ||||
| 
 | ||||
|       - run: yarn build:wasm | ||||
| 
 | ||||
|   yarn-tsc: | ||||
|     runs-on: ubuntu-22.04 | ||||
| 
 | ||||
|     steps: | ||||
| @ -42,13 +58,25 @@ jobs: | ||||
|           workspaces: './src/wasm-lib' | ||||
| 
 | ||||
|       - run: yarn build:wasm | ||||
|       - run: yarn xstate:typegen | ||||
|       - run: yarn tsc | ||||
|       - name: Lint | ||||
|         run: yarn eslint --max-warnings 0 src e2e packages/codemirror-lsp-client | ||||
| 
 | ||||
|   yarn-lint: | ||||
|     runs-on: ubuntu-22.04 | ||||
| 
 | ||||
|   check-typos: | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/setup-node@v4 | ||||
|         with: | ||||
|           node-version-file: '.nvmrc' | ||||
|           cache: 'yarn' | ||||
|       - run: yarn install | ||||
|       - uses: Swatinem/rust-cache@v2 | ||||
|         with: | ||||
|           workspaces: './src/wasm-lib' | ||||
| 
 | ||||
|       - run: yarn lint | ||||
| 
 | ||||
|   python-codespell: | ||||
|     runs-on: ubuntu-22.04 | ||||
|     steps: | ||||
|       - name: Checkout | ||||
| @ -62,7 +90,7 @@ jobs: | ||||
|         run: codespell --config .codespellrc # Edit this file to tweak the typo list and other configuration. | ||||
| 
 | ||||
| 
 | ||||
|   build-test-web: | ||||
|   yarn-unit-test: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
| @ -80,7 +108,7 @@ jobs: | ||||
| 
 | ||||
|       - run: yarn build:wasm | ||||
| 
 | ||||
|       - run: yarn simpleserver:ci | ||||
|       - run: yarn simpleserver:bg | ||||
|         if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }} | ||||
| 
 | ||||
|       - name: Install Chromium Browser | ||||
| @ -89,7 +117,7 @@ jobs: | ||||
| 
 | ||||
|       - name: run unit tests | ||||
|         if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }} | ||||
|         run: yarn test:nowatch | ||||
|         run: yarn test:unit | ||||
|         env: | ||||
|           VITE_KC_DEV_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} | ||||
| 
 | ||||
| @ -5,6 +5,7 @@ coverage | ||||
|  | ||||
| # Ignore Rust projects: | ||||
| *.rs | ||||
| *.hbs | ||||
| target | ||||
| src/wasm-lib/pkg | ||||
| src/wasm-lib/kcl/bindings | ||||
|  | ||||
							
								
								
									
										65
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										65
									
								
								README.md
									
									
									
									
									
								
							| @ -304,7 +304,7 @@ yarn start | ||||
| and finally: | ||||
|  | ||||
| ``` | ||||
| yarn test:nowatch | ||||
| yarn test:unit | ||||
| ``` | ||||
|  | ||||
| For individual testing: | ||||
| @ -322,6 +322,69 @@ cd src/wasm-lib | ||||
| cargo test | ||||
| ``` | ||||
|  | ||||
| ### Mapping CI CD jobs to local commands | ||||
|  | ||||
| When you see the CI CD fail on jobs you may wonder three things | ||||
| - Do I have a bug in my code? | ||||
| - Is the test flaky? | ||||
| - Is there a bug in `main`? | ||||
|  | ||||
| To answer these questions the following commands will give you confidence to locate the issue. | ||||
|  | ||||
| #### Static Analysis | ||||
|  | ||||
| Part of the CI CD pipeline performs static analysis on the code. Use the following commands to mimic the CI CD jobs. | ||||
|  | ||||
| The following set of commands should get us closer to one and done commands to instantly retest issues. | ||||
|  | ||||
| ``` | ||||
| yarn test-setup | ||||
| ``` | ||||
|  | ||||
| > Gotcha, are packages up to date and is the wasm built? | ||||
|  | ||||
|  | ||||
| ``` | ||||
| yarn tsc | ||||
| yarn fmt-check | ||||
| yarn lint | ||||
| yarn test:unit:local | ||||
| ``` | ||||
|  | ||||
| > Gotcha: Our unit tests have integration tests in them. You need to run a localhost server to run the unit tests. | ||||
|  | ||||
| #### E2E Tests | ||||
|  | ||||
| **Playwright Browser** | ||||
|  | ||||
| These E2E tests run in a browser (without electron). | ||||
| There are tests that are skipped if they are ran in a windows OS or Linux OS. We can use playwright tags to implement test skipping. | ||||
|  | ||||
| Breaking down the command `yarn test:playwright:browser:chrome:windows` | ||||
| - The application is `playwright` | ||||
| - The runtime is a `browser` | ||||
| - The specific `browser` is `chrome` | ||||
| - The test should run in a `windows` environment. It will skip tests that are broken or flaky in the windows OS. | ||||
|  | ||||
| ``` | ||||
| yarn test:playwright:browser:chrome | ||||
| yarn test:playwright:browser:chrome:windows | ||||
| yarn test:playwright:browser:chrome:ubuntu | ||||
| ``` | ||||
|  | ||||
| **Playwright Electron** | ||||
|  | ||||
| These E2E tests run in electron. There are tests that are skipped if they are ran in a windows, linux, or macos environment. We can use playwright tags to implement test skipping. | ||||
|  | ||||
| ``` | ||||
| yarn test:playwright:electron:local | ||||
| yarn test:playwright:electron:windows:local | ||||
| yarn test:playwright:electron:macos:local | ||||
| yarn test:playwright:electron:ubuntu:local | ||||
| ``` | ||||
|  | ||||
| > Why does it say local? The CI CD commands that run in the pipeline cannot be ran locally. A single command will not properly setup the testing environment locally. | ||||
|  | ||||
| #### Some notes on CI | ||||
|  | ||||
| The tests are broken into snapshot tests and non-snapshot tests, and they run in that order, they automatically commit new snap shots, so if you see an image commit check it was an intended change. If we have non-determinism in the snapshots such that they are always committing new images, hopefully this annoyance makes us fix them asap, if you notice this happening let Kurt know. But for the odd occasion `git reset --hard HEAD~ && git push -f` is your friend. | ||||
|  | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										957
									
								
								docs/kcl/arc.md
									
									
									
									
									
								
							
							
						
						
									
										957
									
								
								docs/kcl/arc.md
									
									
									
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1112
									
								
								docs/kcl/circle.md
									
									
									
									
									
								
							
							
						
						
									
										1112
									
								
								docs/kcl/circle.md
									
									
									
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1384
									
								
								docs/kcl/hole.md
									
									
									
									
									
								
							
							
						
						
									
										1384
									
								
								docs/kcl/hole.md
									
									
									
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -19,7 +19,6 @@ layout: manual | ||||
| * [`angledLineToX`](kcl/angledLineToX) | ||||
| * [`angledLineToY`](kcl/angledLineToY) | ||||
| * [`arc`](kcl/arc) | ||||
| * [`arrayReduce`](kcl/arrayReduce) | ||||
| * [`asin`](kcl/asin) | ||||
| * [`assert`](kcl/assert) | ||||
| * [`assertEqual`](kcl/assertEqual) | ||||
| @ -62,8 +61,10 @@ layout: manual | ||||
| * [`log10`](kcl/log10) | ||||
| * [`log2`](kcl/log2) | ||||
| * [`m`](kcl/m) | ||||
| * [`map`](kcl/map) | ||||
| * [`max`](kcl/max) | ||||
| * [`min`](kcl/min) | ||||
| * [`mirror2d`](kcl/mirror2d) | ||||
| * [`mm`](kcl/mm) | ||||
| * [`offsetPlane`](kcl/offsetPlane) | ||||
| * [`patternCircular2d`](kcl/patternCircular2d) | ||||
| @ -77,6 +78,8 @@ layout: manual | ||||
| * [`profileStart`](kcl/profileStart) | ||||
| * [`profileStartX`](kcl/profileStartX) | ||||
| * [`profileStartY`](kcl/profileStartY) | ||||
| * [`reduce`](kcl/reduce) | ||||
| * [`rem`](kcl/rem) | ||||
| * [`revolve`](kcl/revolve) | ||||
| * [`segAng`](kcl/segAng) | ||||
| * [`segEndX`](kcl/segEndX) | ||||
|  | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -16,20 +16,23 @@ legAngX(hypotenuse: number, leg: number) -> number | ||||
|  | ||||
| * `utilities` | ||||
|  | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| | Name | Type | Description | Required | | ||||
| |----------|------|-------------|----------| | ||||
| | `hypotenuse` | `number` |  | Yes | | ||||
| | `leg` | `number` |  | Yes | | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number`  | ||||
|  | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| legAngX(5, 3) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `hypotenuse`: `number` (REQUIRED) | ||||
| * `leg`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -16,20 +16,23 @@ legAngY(hypotenuse: number, leg: number) -> number | ||||
|  | ||||
| * `utilities` | ||||
|  | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| | Name | Type | Description | Required | | ||||
| |----------|------|-------------|----------| | ||||
| | `hypotenuse` | `number` |  | Yes | | ||||
| | `leg` | `number` |  | Yes | | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number`  | ||||
|  | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| legAngY(5, 3) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `hypotenuse`: `number` (REQUIRED) | ||||
| * `leg`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -16,20 +16,23 @@ legLen(hypotenuse: number, leg: number) -> number | ||||
|  | ||||
| * `utilities` | ||||
|  | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| | Name | Type | Description | Required | | ||||
| |----------|------|-------------|----------| | ||||
| | `hypotenuse` | `number` |  | Yes | | ||||
| | `leg` | `number` |  | Yes | | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number`  | ||||
|  | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| legLen(5, 3) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `hypotenuse`: `number` (REQUIRED) | ||||
| * `leg`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										941
									
								
								docs/kcl/line.md
									
									
									
									
									
								
							
							
						
						
									
										941
									
								
								docs/kcl/line.md
									
									
									
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										470
									
								
								docs/kcl/loft.md
									
									
									
									
									
								
							
							
						
						
									
										470
									
								
								docs/kcl/loft.md
									
									
									
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										56
									
								
								docs/kcl/map.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								docs/kcl/map.md
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										98
									
								
								docs/kcl/mirror2d.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								docs/kcl/mirror2d.md
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										47
									
								
								docs/kcl/reduce.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								docs/kcl/reduce.md
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										42
									
								
								docs/kcl/rem.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								docs/kcl/rem.md
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1045
									
								
								docs/kcl/revolve.md
									
									
									
									
									
								
							
							
						
						
									
										1045
									
								
								docs/kcl/revolve.md
									
									
									
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										433147
									
								
								docs/kcl/std.json
									
									
									
									
									
								
							
							
						
						
									
										433147
									
								
								docs/kcl/std.json
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	