name: Pipeline Segment - Node/Nan Test on: workflow_call: inputs: target-platform: type: string description: 'Platform to run on, can be macos or linux' required: true target-arch: type: string description: 'Arch to build for, can be x64, arm64 or arm' required: true test-runs-on: type: string description: 'What host to run the tests on' required: true test-container: type: string description: 'JSON container information for aks runs-on' required: false default: '{"image":null}' gn-build-type: description: 'The gn build type - testing or release' required: true type: string default: testing concurrency: group: electron-node-nan-test-${{ inputs.target-platform }}-${{ inputs.target-arch }}-${{ github.ref }} cancel-in-progress: ${{ github.ref != 'refs/heads/main' && !endsWith(github.ref, '-x-y') }} env: ELECTRON_OUT_DIR: Default ELECTRON_RBE_JWT: ${{ secrets.ELECTRON_RBE_JWT }} jobs: node-tests: name: Run Node.js Tests runs-on: electron-arc-linux-amd64-8core timeout-minutes: 20 env: TARGET_ARCH: ${{ inputs.target-arch }} BUILD_TYPE: linux container: ${{ fromJSON(inputs.test-container) }} steps: - name: Checkout Electron uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 with: path: src/electron fetch-depth: 0 - name: Install Build Tools uses: ./src/electron/.github/actions/install-build-tools - name: Init Build Tools run: | e init -f --root=$(pwd) --out=Default ${{ inputs.gn-build-type }} --import ${{ inputs.gn-build-type }} --target-cpu ${{ inputs.target-arch }} - name: Install Dependencies run: | cd src/electron node script/yarn install --frozen-lockfile - name: Get Depot Tools timeout-minutes: 5 run: | git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git sed -i '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja cd depot_tools git apply --3way ../src/electron/.github/workflows/config/gclient.diff # Ensure depot_tools does not update. test -d depot_tools && cd depot_tools touch .disable_auto_update - name: Add Depot Tools to PATH run: echo "$(pwd)/depot_tools" >> $GITHUB_PATH - name: Download Generated Artifacts uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e with: name: generated_artifacts_${{ env.BUILD_TYPE }}_${{ env.TARGET_ARCH }} path: ./generated_artifacts_${{ env.BUILD_TYPE }}_${{ env.TARGET_ARCH }} - name: Download Src Artifacts uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e with: name: src_artifacts_linux_${{ env.TARGET_ARCH }} path: ./src_artifacts_linux_${{ env.TARGET_ARCH }} - name: Restore Generated Artifacts run: ./src/electron/script/actions/restore-artifacts.sh - name: Unzip Dist run: | cd src/out/Default unzip -:o dist.zip - name: Setup Linux for Headless Testing run: sh -e /etc/init.d/xvfb start - name: Run Node.js Tests run: | cd src node electron/script/node-spec-runner.js --default --jUnitDir=junit - name: Wait for active SSH sessions if: always() && !cancelled() run: | while [ -f /var/.ssh-lock ] do sleep 60 done nan-tests: name: Run Nan Tests runs-on: electron-arc-linux-amd64-4core timeout-minutes: 20 env: TARGET_ARCH: ${{ inputs.target-arch }} BUILD_TYPE: linux container: ${{ fromJSON(inputs.test-container) }} steps: - name: Checkout Electron uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 with: path: src/electron fetch-depth: 0 - name: Install Build Tools uses: ./src/electron/.github/actions/install-build-tools - name: Init Build Tools run: | e init -f --root=$(pwd) --out=Default ${{ inputs.gn-build-type }} - name: Install Dependencies run: | cd src/electron node script/yarn install --frozen-lockfile - name: Get Depot Tools timeout-minutes: 5 run: | git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git sed -i '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja cd depot_tools git apply --3way ../src/electron/.github/workflows/config/gclient.diff # Ensure depot_tools does not update. test -d depot_tools && cd depot_tools touch .disable_auto_update - name: Add Depot Tools to PATH run: echo "$(pwd)/depot_tools" >> $GITHUB_PATH - name: Download Generated Artifacts uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e with: name: generated_artifacts_${{ env.BUILD_TYPE }}_${{ env.TARGET_ARCH }} path: ./generated_artifacts_${{ env.BUILD_TYPE }}_${{ env.TARGET_ARCH }} - name: Download Src Artifacts uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e with: name: src_artifacts_linux_${{ env.TARGET_ARCH }} path: ./src_artifacts_linux_${{ env.TARGET_ARCH }} - name: Restore Generated Artifacts run: ./src/electron/script/actions/restore-artifacts.sh - name: Unzip Dist run: | cd src/out/Default unzip -:o dist.zip - name: Setup Linux for Headless Testing run: sh -e /etc/init.d/xvfb start - name: Run Node.js Tests run: | cd src node electron/script/nan-spec-runner.js - name: Wait for active SSH sessions if: always() && !cancelled() run: | while [ -f /var/.ssh-lock ] do sleep 60 done