feat: cancellable project uploads and job commands #4244
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test | |
on: | |
workflow_dispatch: | |
pull_request: | |
env: | |
SAUCE_USERNAME: ${{secrets.SAUCE_USERNAME}} | |
SAUCE_ACCESS_KEY: ${{secrets.SAUCE_ACCESS_KEY}} | |
BUILD_ID: saucectl-run-${{ github.run_id }} | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.23' | |
- name: Lint | |
uses: golangci/golangci-lint-action@v6 | |
with: | |
args: --timeout 3m | |
version: latest | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.23' | |
- name: Run tests | |
run: | | |
go test ./... | |
check-schema: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: npm | |
cache-dependency-path: scripts/json-schema-bundler/package-lock.json | |
- name: Install Dependencies | |
working-directory: scripts/json-schema-bundler | |
run: npm ci | |
- name: Generate Schema | |
working-directory: scripts/json-schema-bundler | |
run: npm run bundle -- -s ../../api/global.schema.json -o ../../api/fresh.schema.json | |
- name: Check Schema | |
working-directory: api/ | |
run: diff saucectl.schema.json fresh.schema.json | |
build: | |
needs: [lint, test] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.23' | |
- name: Build Project | |
run: | | |
SHORT_SHA=$(echo $GITHUB_SHA | cut -c1-8) | |
LDFLAG_VERSION="github.com/saucelabs/saucectl/cli/version.Version=v0.0.0+$SHORT_SHA" | |
LDFLAG_SHA="github.com/saucelabs/saucectl/cli/version.GitCommit=$GITHUB_SHA" | |
go install ./... | |
CGO_ENABLED=0 go build -ldflags="-X $LDFLAG_VERSION -X $LDFLAG_SHA" cmd/saucectl/saucectl.go | |
GOOS=windows GOARCH=amd64 go build cmd/saucectl/saucectl.go | |
- name: Check GoReleaser Config | |
uses: goreleaser/goreleaser-action@v6 | |
with: | |
version: '~> v2' | |
args: check | |
- name: Upload Binary | |
uses: actions/upload-artifact@v4 | |
with: | |
name: saucectlbin | |
path: | | |
saucectl | |
saucectl.exe | |
test-configure: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v4 | |
with: | |
name: saucectlbin | |
- name: Set Permissions | |
run: chmod +x ./saucectl | |
- name: Saucectl Configure | |
run: ./saucectl configure -u $SAUCE_USERNAME -a $SAUCE_ACCESS_KEY | |
puppeteer-replay: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v4 | |
with: | |
name: saucectlbin | |
- name: Set Permissions | |
run: chmod +x ./saucectl | |
- name: Saucectl RUN - Config Driven | |
run: ./saucectl run -c .sauce/replay.yml --timeout 10m | |
- name: Saucectl RUN - CLI Driven | |
run: ./saucectl run replay "tests/e2e/replay/recording.json" -c "" --name "CLI Driven" --timeout 10m -r us-west-1 | |
playwright: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v4 | |
with: | |
name: saucectlbin | |
- name: Set Permissions | |
run: chmod +x ./saucectl | |
- name: Saucectl RUN - Config Driven | |
run: ./saucectl run -c .sauce/playwright.yml --timeout 10m | |
- name: Saucectl RUN - CLI Driven | |
run: ./saucectl run playwright ".*.js" -c "" --name "CLI Driven" --browser chromium --rootDir tests/e2e/playwright/ --playwright.version 1.48.2 --timeout 10m -r us-west-1 | |
testcafe: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v4 | |
with: | |
name: saucectlbin | |
- name: Set Permissions | |
run: chmod +x ./saucectl | |
- name: Saucectl RUN - Config Driven | |
run: ./saucectl run -c .sauce/testcafe.yml --timeout 10m | |
- name: Saucectl RUN - CLI Driven | |
run: ./saucectl run testcafe "*.test.js" -c "" --name "CLI Driven" --browser chrome --browserVersion 128 --rootDir tests/e2e/testcafe/ --testcafe.version 3.7.0 --timeout 10m -r us-west-1 | |
cypress: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v4 | |
with: | |
name: saucectlbin | |
- name: Set Permissions | |
run: chmod +x ./saucectl | |
- name: Saucectl RUN - Config Driven | |
run: | | |
./saucectl run -c .sauce/cypress-10.yml --timeout 10m | |
- name: Saucectl RUN - CLI Driven | |
run: | | |
./saucectl run cypress "cypress/e2e/**/*.js" \ | |
-c "" --name "CLI Driven" \ | |
--rootDir tests/e2e/cypress_10/e2e/ \ | |
--browser chrome \ | |
--cypress.version 13.15.2 \ | |
--cypress.configFile "cypress.config.js" \ | |
--timeout 10m \ | |
-r us-west-1 | |
espresso: | |
needs: build | |
runs-on: ubuntu-latest | |
env: | |
BUILD_ID: ${{ github.run_id }} | |
BUILD_ENV: GitHub Actions | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v4 | |
with: | |
name: saucectlbin | |
- name: Set Permissions | |
run: chmod +x ./saucectl | |
- name: Saucectl RUN - Config Driven | |
run: | | |
./saucectl run -c .sauce/espresso.yml | |
- name: Saucectl RUN - CLI Driven | |
run: | | |
./saucectl run espresso -c "" \ | |
--name "CLI Driven" \ | |
--app ./tests/e2e/espresso/mda-1.0.17-20.apk \ | |
--testApp ./tests/e2e/espresso/mda-androidTest-1.0.17-20.apk \ | |
--emulator name="Android GoogleApi Emulator",platformVersion=11.0 \ | |
--testOptions.size small \ | |
-r us-west-1 | |
xcuitest: | |
needs: build | |
runs-on: ubuntu-latest | |
env: | |
BUILD_ID: ${{ github.run_id }} | |
BUILD_ENV: GitHub Actions | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v4 | |
with: | |
name: saucectlbin | |
- name: Set Permissions | |
run: chmod +x ./saucectl | |
- name: Saucectl RUN - Config Driven | |
run: | | |
./saucectl run -c .sauce/xcuitest.yml --timeout 10m | |
- name: Saucectl RUN - CLI Driven | |
run: | | |
./saucectl run xcuitest \ | |
-c "" \ | |
--name "cli driven" \ | |
--retries 2 \ | |
--app ./tests/e2e/xcuitest/SauceLabs-Demo-App.XCUITest.ipa \ | |
--testApp ./tests/e2e/xcuitest/SauceLabs-Demo-App-Runner.XCUITest.ipa \ | |
--testOptions.class MyDemoAppUITests.ProductListingPageTest \ | |
--device name="iPhone.*" \ | |
--timeout 10m \ | |
-r us-west-1 | |
playwright-cucumberjs: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v4 | |
with: | |
name: saucectlbin | |
- name: Set Permissions | |
run: chmod +x ./saucectl | |
- name: Saucectl RUN - Config Driven | |
working-directory: ./tests/e2e/playwright-cucumberjs | |
run: | | |
npm ci --production | |
../../../saucectl run | |
imagerunner: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v4 | |
with: | |
name: saucectlbin | |
- name: Set Permissions | |
run: chmod +x ./saucectl | |
- name: Saucectl RUN | |
run: ./saucectl run -c .sauce/imagerunner.yml | |
async-test: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v4 | |
with: | |
name: saucectlbin | |
- name: Set Permissions | |
run: chmod +x ./saucectl | |
- name: Saucectl RUN | |
run: | | |
./saucectl run -c .sauce/espresso.yml --async --timeout 10m |