steps: - task: CopyFiles@2 displayName: 'Copy Files to: src/electron' inputs: TargetFolder: src/electron - bash: | cd src/electron node script/yarn.js install --frozen-lockfile displayName: 'Yarn install' - bash: | export ZIP_DEST=$PWD/src/out/Default echo "##vso[task.setvariable variable=ZIP_DEST]$ZIP_DEST" mkdir -p $ZIP_DEST cd src/electron node script/download-circleci-artifacts.js --buildNum=$CIRCLE_BUILD_NUM --name=dist.zip --dest=$ZIP_DEST cd $ZIP_DEST unzip -o dist.zip xattr -cr Electron.app displayName: 'Download and unzip dist files for test' env: CIRCLE_TOKEN: $(CIRCLECI_TOKEN) - bash: | export FFMPEG_ZIP_DEST=$PWD/src/out/ffmpeg mkdir -p $FFMPEG_ZIP_DEST cd src/electron node script/download-circleci-artifacts.js --buildNum=$CIRCLE_BUILD_NUM --name=ffmpeg.zip --dest=$FFMPEG_ZIP_DEST cd $FFMPEG_ZIP_DEST unzip -o ffmpeg.zip displayName: 'Download and unzip ffmpeg for test' env: CIRCLE_TOKEN: $(CIRCLECI_TOKEN) - bash: | export NODE_HEADERS_DEST=$PWD/src/out/Default/gen mkdir -p $NODE_HEADERS_DEST cd src/electron node script/download-circleci-artifacts.js --buildNum=$CIRCLE_BUILD_NUM --name=node_headers.tar.gz --dest=$NODE_HEADERS_DEST cd $NODE_HEADERS_DEST tar xzf node_headers.tar.gz displayName: 'Download and untar node header files for test' env: CIRCLE_TOKEN: $(CIRCLECI_TOKEN) - bash: | export CROSS_ARCH_SNAPSHOTS=$PWD/src/out/Default/cross-arch-snapshots mkdir -p $CROSS_ARCH_SNAPSHOTS cd src/electron node script/download-circleci-artifacts.js --buildNum=$CIRCLE_BUILD_NUM --name=cross-arch-snapshots/snapshot_blob.bin --dest=$CROSS_ARCH_SNAPSHOTS node script/download-circleci-artifacts.js --buildNum=$CIRCLE_BUILD_NUM --name=cross-arch-snapshots/v8_context_snapshot.arm64.bin --dest=$CROSS_ARCH_SNAPSHOTS displayName: 'Download cross arch snapshot files' env: CIRCLE_TOKEN: $(CIRCLECI_TOKEN) - bash: | cd src export ELECTRON_OUT_DIR=Default export npm_config_arch=arm64 (cd electron && node script/yarn test --enable-logging --runners main) displayName: 'Run Electron main tests' timeoutInMinutes: 20 env: ELECTRON_DISABLE_SECURITY_WARNINGS: 1 IGNORE_YARN_INSTALL_ERROR: 1 ELECTRON_TEST_RESULTS_DIR: junit - bash: | cd src export ELECTRON_OUT_DIR=Default export npm_config_arch=arm64 (cd electron && node script/yarn test --enable-logging --runners remote) displayName: 'Run Electron remote tests' timeoutInMinutes: 20 condition: succeededOrFailed() env: ELECTRON_DISABLE_SECURITY_WARNINGS: 1 IGNORE_YARN_INSTALL_ERROR: 1 ELECTRON_TEST_RESULTS_DIR: junit - bash: | cd src python electron/script/verify-ffmpeg.py --source-root "$PWD" --build-dir out/Default --ffmpeg-path out/ffmpeg displayName: Verify non proprietary ffmpeg timeoutInMinutes: 5 condition: succeededOrFailed() env: TARGET_ARCH: arm64 - bash: | cd src echo Verify cross arch snapshot python electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default --snapshot-files-dir $PWD/out/Default/cross-arch-snapshots displayName: Verify cross arch snapshot timeoutInMinutes: 5 condition: succeededOrFailed() - task: PublishTestResults@2 displayName: 'Publish Test Results' inputs: testResultsFiles: '*.xml' searchFolder: '$(System.DefaultWorkingDirectory)/src/junit/' condition: succeededOrFailed() - bash: killall Electron || echo "No Electron processes left running" displayName: 'Kill processes left running from last test run' condition: always() - bash: | rm -rf ~/Library/Application\ Support/Electron* rm -rf ~/Library/Application\ Support/electron* displayName: 'Delete user app data directories' condition: always() - task: mspremier.PostBuildCleanup.PostBuildCleanup-task.PostBuildCleanup@3 displayName: 'Clean Agent Directories' condition: always()