Skip to content

Commit

Permalink
Merge pull request #94 from golemfactory/mgordel/debug-ci-tests
Browse files Browse the repository at this point in the history
Fixed e2e tests and improved CI env
  • Loading branch information
mgordel authored Jul 18, 2024
2 parents 3d3428a + eab1ee7 commit 6eddaca
Show file tree
Hide file tree
Showing 17 changed files with 333 additions and 147 deletions.
15 changes: 15 additions & 0 deletions .github/actions/prepare-tests/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,18 @@ runs:
shell: bash
run: |
docker exec -t docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor && ./node_modules/.bin/cypress install"
- name: Run a preliminary scan of offers
shell: bash
run: |
docker exec -t docker-requestor-1 /bin/sh -c "npm install --no-progress -g @prekucki/wait-for-n && wait-for-n --limit=6 --appkey=try_golem --subnet=$YAGNA_SUBNET"
- name: List down sessions seen on that requestor
shell: bash
run: |
docker exec docker-requestor-1 /bin/sh -c "yagna net sessions"
- name: Run a secondary scan of offers
shell: bash
run: |
docker exec -t docker-requestor-1 /bin/sh -c "npx --no-progress --yes @golem-sdk/cli market scan -k try_golem --subnet-tag $YAGNA_SUBNET --payment-network $PAYMENT_NETWORK"
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ on:
# Support, hotfix branches like: 1.0.x or 1.x
- '([0-9]+)(\.([0-9]+))?\.x'

workflow_call:

# Allows triggering the workflow manually
workflow_dispatch:

Expand Down
75 changes: 75 additions & 0 deletions .github/workflows/cypress-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: cypress tests

on:
workflow_call:
# Allows triggering the workflow manually
workflow_dispatch:
inputs:
payment_network:
description: "Payment network (holesky, goerli, mainnet, mumbai, polygon, rinkeby)"
required: false
default: "holesky"
provider_version:
description: "Provider version (e.g., v0.15.2 or pre-rel-v0.15.1)"
required: false
default: "v0.15.2"
requestor_version:
description: "Requestor version (e.g., v0.15.2 or pre-rel-v0.15.1)"
required: false
default: "v0.15.2"
provider_wasi_version:
description: "Provider WASI version (e.g., v0.2.2)"
required: false
default: "v0.2.2"
provider_vm_version:
description: "Provider VM version (e.g., v0.3.0)"
required: false
default: "v0.3.0"

# We're going to interact with GH from the pipelines, so we need to get some permissions
permissions:
contents: read # for checkout

env:
PROVIDER_VERSION: ${{ github.event.inputs.provider_version || 'v0.15.2' }}
REQUESTOR_VERSION: ${{ github.event.inputs.requestor_version || 'v0.15.2' }}
PROVIDER_WASI_VERSION: ${{ github.event.inputs.provider_wasi_version || 'v0.2.2' }}
PROVIDER_VM_VERSION: ${{ github.event.inputs.provider_vm_version || 'v0.3.0' }}
PAYMENT_NETWORK: ${{ github.event.inputs.payment_network || 'holesky' }}

jobs:
run-cypress-tests:
name: Cypress
runs-on: goth2
steps:
- uses: actions/checkout@v4

- name: Prepare providers and requestor
uses: ./.github/actions/prepare-tests
with:
type: "cypress"

- name: Copy docs examples
run: docker exec -t docker-requestor-1 /bin/sh -c '
cp /golem-sdk-task-executor/examples/docs-examples/examples/transferring-data/transfer-data-in-browser.html /golem-sdk-task-executor/examples/web/ &&
cp /golem-sdk-task-executor/examples/docs-examples/examples/transferring-data/upload-json-in-browser.html /golem-sdk-task-executor/examples/web/ &&
cp /golem-sdk-task-executor/examples/docs-examples/quickstarts/web-quickstart/index.html /golem-sdk-task-executor/examples/web/quickstart.html &&
cp /golem-sdk-task-executor/examples/docs-examples/quickstarts/web-quickstart/requestor.mjs /golem-sdk-task-executor/examples/web/ &&
cp /golem-sdk-task-executor/examples/docs-examples/tutorials/running-from-browser/index.html /golem-sdk-task-executor/examples/web/tutorial.html'
- name: Run web server
run: docker exec -t -d docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor/examples && npm run web"

- name: Run test suite
run: docker exec -t docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor && npm run test:cypress -- --browser chromium"

- name: Upload test logs
uses: actions/upload-artifact@v4
if: always()
with:
name: cypress-logs
path: .cypress

- name: Cleanup test environment
uses: ./.github/actions/cleanup-tests
with:
type: "cypress"
63 changes: 63 additions & 0 deletions .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: e2e tests

on:
workflow_call:
# Allows triggering the workflow manually
workflow_dispatch:
inputs:
payment_network:
description: "Payment network (holesky, goerli, mainnet, mumbai, polygon, rinkeby)"
required: false
default: "holesky"
provider_version:
description: "Provider version (e.g., v0.15.2 or pre-rel-v0.15.1)"
required: false
default: "v0.15.2"
requestor_version:
description: "Requestor version (e.g., v0.15.2 or pre-rel-v0.15.1)"
required: false
default: "v0.15.2"
provider_wasi_version:
description: "Provider WASI version (e.g., v0.2.2)"
required: false
default: "v0.2.2"
provider_vm_version:
description: "Provider VM version (e.g., v0.3.0)"
required: false
default: "v0.3.0"

# We're going to interact with GH from the pipelines, so we need to get some permissions
permissions:
contents: read # for checkout

env:
PROVIDER_VERSION: ${{ github.event.inputs.provider_version || 'v0.15.2' }}
REQUESTOR_VERSION: ${{ github.event.inputs.requestor_version || 'v0.15.2' }}
PROVIDER_WASI_VERSION: ${{ github.event.inputs.provider_wasi_version || 'v0.2.2' }}
PROVIDER_VM_VERSION: ${{ github.event.inputs.provider_vm_version || 'v0.3.0' }}
PAYMENT_NETWORK: ${{ github.event.inputs.payment_network || 'holesky' }}

jobs:
run-e2e-tests:
name: E2E
runs-on: goth2
steps:
- uses: actions/checkout@v4

- name: Prepare providers and requestor
uses: ./.github/actions/prepare-tests

- name: Start the E2E test
run: docker exec -t docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor && npm run test:e2e"

- name: Upload E2E reports
uses: actions/upload-artifact@v4
if: always()
with:
name: e2e-test-report
path: reports/e2e-report.xml

- name: Cleanup test environment
uses: ./.github/actions/cleanup-tests
with:
type: "e2e"
56 changes: 56 additions & 0 deletions .github/workflows/examples-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: examples tests

on:
workflow_call:
# Allows triggering the workflow manually
workflow_dispatch:
inputs:
payment_network:
description: "Payment network (holesky, goerli, mainnet, mumbai, polygon, rinkeby)"
required: false
default: "holesky"
provider_version:
description: "Provider version (e.g., v0.15.2 or pre-rel-v0.15.1)"
required: false
default: "v0.15.2"
requestor_version:
description: "Requestor version (e.g., v0.15.2 or pre-rel-v0.15.1)"
required: false
default: "v0.15.2"
provider_wasi_version:
description: "Provider WASI version (e.g., v0.2.2)"
required: false
default: "v0.2.2"
provider_vm_version:
description: "Provider VM version (e.g., v0.3.0)"
required: false
default: "v0.3.0"

# We're going to interact with GH from the pipelines, so we need to get some permissions
permissions:
contents: read # for checkout

env:
PROVIDER_VERSION: ${{ github.event.inputs.provider_version || 'v0.15.2' }}
REQUESTOR_VERSION: ${{ github.event.inputs.requestor_version || 'v0.15.2' }}
PROVIDER_WASI_VERSION: ${{ github.event.inputs.provider_wasi_version || 'v0.2.2' }}
PROVIDER_VM_VERSION: ${{ github.event.inputs.provider_vm_version || 'v0.3.0' }}
PAYMENT_NETWORK: ${{ github.event.inputs.payment_network || 'holesky' }}

jobs:
run-examples-tests:
name: Examples
runs-on: goth2
steps:
- uses: actions/checkout@v4

- name: Prepare providers and requestor
uses: ./.github/actions/prepare-tests

- name: Run the Examples tests
run: docker exec -t docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor && npm run test:examples -- --exitOnError"

- name: Cleanup test environment
uses: ./.github/actions/cleanup-tests
with:
type: "examples"
48 changes: 48 additions & 0 deletions .github/workflows/regular-checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: regular tests

on:
workflow_call:

workflow_dispatch:

# We're going to interact with GH from the pipelines, so we need to get some permissions
permissions:
contents: read # for checkout

jobs:
regular-checks:
name: Build and unit-test
strategy:
matrix:
# Make sure you're addressing it to the minor version, as sometimes macos was picking 20.9 while others 20.10
# and that caused issues with rollup
node-version: [18.19.x, 20.10.x]
os: [ubuntu-latest, windows-latest, macos-latest]

runs-on: ${{ matrix.os }}
timeout-minutes: 10

steps:
- uses: actions/checkout@v4

- name: Setup NodeJS ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Perform regular checks
run: |
npm ci
npm run format:check
npm run lint
npm run test:unit
npm run build
npm install --prefix examples --legacy-peer-deps
npm run --prefix examples lint:ts
npm run test:import
- name: Upload unit test reports
uses: actions/upload-artifact@v4
if: always()
with:
name: unit-test-report-${{matrix.os}}-node-${{matrix.node-version}}
path: reports/unit-report.xml
Loading

0 comments on commit 6eddaca

Please sign in to comment.