Adding imagerunner services #3687
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: saucectl tests pipeline | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
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: Setup Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.21' | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Lint | |
uses: golangci/golangci-lint-action@v3 | |
with: | |
args: --timeout 3m | |
version: latest | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.21' | |
cache: true | |
- name: Run tests | |
run: | | |
go test -coverprofile=coverage.txt -covermode=atomic ./... | |
coverage=$(go tool cover -func=coverage.txt | tail -n 1 | awk '{ print $3 }' | tr -d '%' | cut -d . -f 1) | |
threshold=40 | |
if [ $coverage -lt $threshold ]; then echo 'Code coverage below threshold!' && exit 1; fi | |
check-schema: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '16' | |
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@v4 | |
with: | |
go-version: '1.21' | |
cache: true | |
- 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@v3 | |
with: | |
version: latest | |
args: check | |
- name: Upload Binary | |
uses: actions/upload-artifact@v3 | |
with: | |
name: saucectlbin | |
path: | | |
saucectl | |
saucectl.exe | |
puppeteer-replay: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v3 | |
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 | |
playwright: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v3 | |
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.33.0 --timeout 10m | |
testcafe: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v3 | |
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 --rootDir tests/e2e/testcafe/ --testcafe.version 2.5.0 --timeout 10m | |
cypress-v1alpha: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v3 | |
with: | |
name: saucectlbin | |
- name: Set Permissions | |
run: chmod +x ./saucectl | |
- name: Saucectl RUN - Config Driven | |
run: | | |
./saucectl run -c .sauce/cypress.yml --timeout 10m | |
cypress-v1: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v3 | |
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 12.11.0 --cypress.configFile "cypress.config.js" --timeout 10m | |
cypress-windows: | |
needs: build | |
runs-on: windows-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@v3 | |
with: | |
name: saucectlbin | |
- name: Saucectl RUN | |
run: | | |
./saucectl.exe run -c .sauce/cypress.yml --select-suite "saucy test in sauce" --timeout 10m | |
espresso: | |
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@v3 | |
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 | |
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@v3 | |
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 | |
apitest: | |
needs: build | |
runs-on: ubuntu-latest | |
# apitest is not publicly released so let's be a bit lax during pre-release | |
continue-on-error: true | |
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@v3 | |
with: | |
name: saucectlbin | |
- name: Set permissions | |
run: chmod +x ./saucectl | |
- name: Saucectl RUN - Config Driven | |
run: | | |
./saucectl run -c .sauce/apitest.yml | |
playwright-cucumberjs: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v3 | |
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 Code | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v3 | |
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 Code | |
uses: actions/checkout@v4 | |
- name: Download saucectl Binary | |
uses: actions/download-artifact@v3 | |
with: | |
name: saucectlbin | |
- name: Set Permissions | |
run: chmod +x ./saucectl | |
- name: Saucectl RUN | |
run: | | |
./saucectl run -c .sauce/espresso.yml --async --timeout 10m |