name: Test on: workflow_dispatch: push: branches: - develop pull_request: types: - opened - synchronize concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: OS: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] steps: - name: Checkout branch uses: actions/checkout@v3 - name: Setup Node uses: actions/setup-node@v3 with: node-version-file: '.nvmrc' - name: Bootstrap packages run: npm run bootstrap - name: Lint if: matrix.os == 'ubuntu-latest' run: npm run lint - name: Lint markdown if: matrix.os == 'ubuntu-latest' run: npm run lint:markdown - name: Type checks if: matrix.os == 'ubuntu-latest' run: npm run type-check - name: Run tests run: npm test - name: Build app for smoke tests env: NODE_OPTIONS: '--max_old_space_size=6144' run: npm run app-build - name: Run Smoke tests (CI) # Partial Smoke test run, for regular CI triggers if: "!startsWith(github.head_ref, 'release/')" run: npm run test:build --prefix packages/insomnia-smoke-test -- --project=Smoke - name: Run Smoke tests (Release) # Full Smoke test run, for Release PRs if: "startsWith(github.head_ref, 'release/')" run: npm run test:build --prefix packages/insomnia-smoke-test - name: Set Inso CLI variables id: inso-variables shell: bash run: | INSO_VERSION="$(jq .version packages/insomnia-inso/package.json -rj)-run.${{ github.run_number }}" PKG_NAME="inso-${{ matrix.os }}-$INSO_VERSION" echo "pkg-name=$PKG_NAME" >> $GITHUB_OUTPUT echo "inso-version=$INSO_VERSION" >> $GITHUB_OUTPUT - name: Run Inso NPM package tests run: npm run test:bundled-inso - name: Package Inso CLI binary run: npm run inso-package env: VERSION: ${{ steps.inso-variables.outputs.inso-version }} - name: Create Inso CLI artifacts run: npm run inso-package:artifacts env: VERSION: ${{ steps.inso-variables.outputs.inso-version }} - name: Upload Inso CLI artifacts uses: actions/upload-artifact@v3 with: if-no-files-found: ignore name: ${{ steps.inso-variables.outputs.pkg-name }} path: packages/insomnia-inso/artifacts - name: Run Inso CLI smoke tests run: npm run test:smoke:cli - name: Upload smoke test screenshots uses: actions/upload-artifact@v3 if: always() with: if-no-files-found: ignore name: ${{ matrix.os }}-smoke-test-screenshots-${{ github.run_number }} path: packages/insomnia-smoke-test/screenshots