Skip to content

Commit

Permalink
Merge pull request #103 from bcgov/chore--update-main-e2e-with-new-ap…
Browse files Browse the repository at this point in the history
…proach

chore: update main e2e with new approach
  • Loading branch information
rstens authored Mar 5, 2024
2 parents 0bd6e39 + 4bbb95a commit 69fd9d1
Show file tree
Hide file tree
Showing 4 changed files with 267 additions and 81 deletions.
288 changes: 232 additions & 56 deletions .github/workflows/main-e2e.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# Workflow starts automatically on push or can be triggered manually.
# This is a desirable pattern as it allows for adhoc test runs without a code push
name: main-e2e
name: new-flow-main

on:
workflow_dispatch:
inputs:
Expand All @@ -21,48 +20,27 @@ on:
- info
- warning
- debug
env:
CYPRESS_users: ${{ secrets.CYPRESS_USERS }}
CYPRESS_BASE_URL: ${{ secrets.CYPRESS_BASEURL }}
CYPRESS_host: ${{ secrets.CYPRESS_HOST }}
CYPRESS_guid: ${{ secrets.CYPRESS_GUID }}
CYPRESS_ENVIRONMENT: ${{ github.base_ref }}
CYPRESS_loginproxy: ${{ secrets.CYPRESS_LOGINPROXY }}
CYPRESS_siteminder: ${{ secrets.CYPRESS_SITEMINDER }}
CYPRESS_smoketest: ${{inputs.smoketest}}
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
sso-request-tests:
pre-reqs:
runs-on: ubuntu-latest
# In order for Cypress to run well, it needs to be fed the needed parameters.
# The below is a mix of Cypress environment variables (All capital) and ones that are needed for this specific set of scripts (Mix of capital and lowercase)
env:
CYPRESS_users: ${{ secrets.CYPRESS_USERS }}
CYPRESS_BASE_URL: ${{ secrets.CYPRESS_BASEURL }}
CYPRESS_host: ${{ secrets.CYPRESS_HOST }}
CYPRESS_guid: ${{ secrets.CYPRESS_GUID }}
CYPRESS_ENVIRONMENT: ${{ github.base_ref }}
CYPRESS_loginproxy: ${{ secrets.CYPRESS_LOGINPROXY }}
CYPRESS_siteminder: ${{ secrets.CYPRESS_SITEMINDER }}
CYPRESS_smoketest: ${{inputs.smoketest}}
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
strategy:
fail-fast: false # https://github.com/cypress-io/github-action/issues/48
steps:
# Checkout the PR branch
- name: Checkout Target Branch
uses: actions/checkout@v4

# We are cache-ing our node modules to slightly speed up execution in the future.
- name: Cache node modules
id: cache-npm
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
name: List the state of node modules
continue-on-error: true
run: npm list

- name: Pre-requisites for test run
uses: cypress-io/github-action@v6
id: prereq
Expand All @@ -77,10 +55,18 @@ jobs:
spec: |
cypress/e2e/**/integration-990-deleteAllIntegrations.cy.ts
cypress/e2e/**/team-900-*.cy.ts
browser: chrome
browser: electron
# project: ./e2e
ci-build-id: ${{ github.event.number }}

smoke-test:
runs-on: ubuntu-latest
strategy:
fail-fast: false # https://github.com/cypress-io/github-action/issues/48
steps:
# Checkout the PR branch
- name: Checkout Target Branch
uses: actions/checkout@v4
- name: E2E Smoke tests
uses: cypress-io/github-action@v6
id: smoke
Expand All @@ -98,27 +84,192 @@ jobs:
# project: ./e2e
ci-build-id: ${{ github.event.number }}

- name: Run the reports
run: |
cd testing
npm run report
- name: Upload Test Reports
uses: actions/upload-artifact@v4
with:
name: smoke-test-results
path: testing/mochawesome-report/report.html

- name: Rocket.Chat Notification
uses: RocketChat/Rocket.Chat.GitHub.Action.Notification@master
if: always() && github.ref == 'refs/heads/main'
with:
type: ${{ job.status }}
job_name: '*Smoke Test*'
mention_if: 'failure'
channel: '#sso-ops'
url: ${{ secrets.ROCKETCHAT_WEBHOOK }}

create-integrations:
runs-on: ubuntu-latest
needs: pre-reqs
strategy:
fail-fast: false # https://github.com/cypress-io/github-action/issues/48
steps:
# Checkout the PR branch
- name: Checkout Target Branch
uses: actions/checkout@v4
- name: Request Creation tests
uses: cypress-io/github-action@v6
id: integration-requests-tests
continue-on-error: false
with:
summary-title: 'Request Integration tests'
summary-title: 'Create Integration data'
wait-on: ${{ secrets.CYPRESS_HOST }}
wait-on-timeout: 120
record: true
install-command: npm ci
working-directory: testing
spec: |
cypress/e2e/**/integration-010-*.cy.ts
cypress/e2e/**/integration-040-*.cy.ts
browser: chrome
# project: ./e2e
ci-build-id: ${{ github.event.number }}

- name: Upload resulting integration data
uses: actions/upload-artifact@v4
with:
name: requestsafter
path: testing/cypress/fixtures/requestsafter.json
compression-level: 0

- name: Upload resulting integration roles data
uses: actions/upload-artifact@v4
with:
name: requestsrolesafter
path: testing/cypress/fixtures/requests-rolesafter.json
compression-level: 0

- name: Run the reports
run: |
cd testing
npm run report
- name: Upload Test Reports
uses: actions/upload-artifact@v4
with:
name: create-integrations
path: testing/mochawesome-report/report.html

- name: Rocket.Chat Notification
uses: RocketChat/Rocket.Chat.GitHub.Action.Notification@master
if: always() && github.ref == 'refs/heads/main'
with:
type: ${{ job.status }}
job_name: '*Create Integrations*'
mention_if: 'failure'
channel: '#sso-ops'
url: ${{ secrets.ROCKETCHAT_WEBHOOK }}

integration-tests:
runs-on: ubuntu-latest
needs: [pre-reqs, create-integrations]
strategy:
fail-fast: false # https://github.com/cypress-io/github-action/issues/48
steps:
# Checkout the PR branch
- name: Checkout Target Branch
uses: actions/checkout@v4

- name: Download requestsafter data
uses: actions/download-artifact@v4
with:
name: requestsafter
path: testing/cypress/fixtures

- run: |
cd testing/cypress/fixtures
ls -al
cat requestsafter.json
printenv | sort
- name: Request Creation tests
uses: cypress-io/github-action@v6
id: integration-requests-tests
continue-on-error: false
with:
summary-title: 'Request Integration tests'
wait-on: ${{ secrets.CYPRESS_HOST }}
wait-on-timeout: 120
record: true
install-command: npm ci
working-directory: testing
spec: |
cypress/e2e/**/integration-011-*.cy.ts
cypress/e2e/**/integration-012-*.cy.ts
cypress/e2e/**/integration-013-*.cy.ts
browser: chrome
# project: ./e2e
ci-build-id: ${{ github.event.number }}
env:
NODE_OPTIONS: '--max-old-space-size=4096'

- name: Install bun
uses: oven-sh/setup-bun@v1

- name: Delete Integrations
uses: cypress-io/github-action@v6
id: delete-integrations
continue-on-error: false
with:
summary-title: 'Integration Deletes'
wait-on: ${{ secrets.CYPRESS_HOST }}
wait-on-timeout: 120
record: true
install-command: bun install --frozen-lockfile
working-directory: testing
spec: |
cypress/e2e/**/integration-900-deleteIntegration.cy.ts
browser: chrome
# project: ./e2e
ci-build-id: ${{ github.event.number }}

- name: Run the reports
run: |
cd testing
npm run report
- name: Upload Test Reports
uses: actions/upload-artifact@v4
with:
name: integration-test-results
path: testing/mochawesome-report/report.html

- name: Rocket.Chat Notification
uses: RocketChat/Rocket.Chat.GitHub.Action.Notification@master
if: always() && github.ref == 'refs/heads/main'
with:
type: ${{ job.status }}
job_name: '*Integration Test*'
mention_if: 'failure'
channel: '#sso-ops'
url: ${{ secrets.ROCKETCHAT_WEBHOOK }}

roles-tests:
runs-on: ubuntu-latest
needs: [pre-reqs, create-integrations]
strategy:
fail-fast: false # https://github.com/cypress-io/github-action/issues/48
steps:
# Checkout the PR branch
- name: Checkout Target Branch
uses: actions/checkout@v4

- name: Download requestrolesafter data
uses: actions/download-artifact@v4
with:
name: requestsrolesafter
path: testing/cypress/fixtures

- run: |
cd testing/cypress/fixtures
ls -al
cat requests-rolesafter.json
printenv | sort
- name: Roles tests
uses: cypress-io/github-action@v6
Expand All @@ -132,37 +283,64 @@ jobs:
install-command: npm ci
working-directory: testing
spec: |
cypress/e2e/**/integration-040-*.cy.ts
cypress/e2e/**/integration-041-*.cy.ts
cypress/e2e/**/integration-042-*.cy.ts
cypress/e2e/**/integration-043-*.cy.ts
cypress/e2e/**/integration-044-*.cy.ts
browser: chrome
# project: ./e2e
ci-build-id: ${{ github.event.number }}
env:
NODE_OPTIONS: '--max-old-space-size=4096'

- name: Delete All Integrations
- name: Install bun
uses: oven-sh/setup-bun@v1

- name: Delete All Roles Integrations
uses: cypress-io/github-action@v6
id: delete-integrations
id: delete-integrations-roles
continue-on-error: false
with:
summary-title: 'Integration Deletes'
summary-title: 'Integration Roles Deletes'
wait-on: ${{ secrets.CYPRESS_HOST }}
wait-on-timeout: 120
record: true
install-command: npm ci
install-command: bun install --frozen-lockfile
working-directory: testing
spec: |
cypress/e2e/**/integration-990-deleteAllIntegrations.cy.ts
# cypress/e2e/**/integration-900-*.cy.ts
browser: electron
cypress/e2e/**/integration-910-deleteIntegrationRoles.cy.ts
browser: chrome
# project: ./e2e
ci-build-id: ${{ github.event.number }}
env:
NODE_OPTIONS: '--max-old-space-size=4096'

- name: Run the reports
run: |
cd testing
npm run report
- name: Upload Test Reports
uses: actions/upload-artifact@v4
with:
name: roles-test-results
path: testing/mochawesome-report/report.html

- name: Rocket.Chat Notification
uses: RocketChat/Rocket.Chat.GitHub.Action.Notification@master
if: always() && github.ref == 'refs/heads/main'
with:
type: ${{ job.status }}
job_name: '*Roles Test*'
mention_if: 'failure'
channel: '#sso-ops'
url: ${{ secrets.ROCKETCHAT_WEBHOOK }}

search-tests:
runs-on: ubuntu-latest
needs: pre-reqs
strategy:
fail-fast: false # https://github.com/cypress-io/github-action/issues/48
steps:
# Checkout the PR branch
- name: Checkout Target Branch
uses: actions/checkout@v4
- name: Search Users
uses: cypress-io/github-action@v6
id: search-users
Expand All @@ -180,8 +358,6 @@ jobs:
browser: chrome
# project: ./e2e
ci-build-id: ${{ github.event.number }}
env:
NODE_OPTIONS: '--max-old-space-size=4096'

- name: Run the reports
run: |
Expand All @@ -191,15 +367,15 @@ jobs:
- name: Upload Test Reports
uses: actions/upload-artifact@v4
with:
name: test-results
name: search-test-results
path: testing/mochawesome-report/report.html

- name: Rocket.Chat Notification
uses: RocketChat/Rocket.Chat.GitHub.Action.Notification@master
if: always() && github.ref == 'refs/heads/main'
with:
type: ${{ job.status }}
job_name: '*End-To-End Test*'
job_name: '*Search Test*'
mention_if: 'failure'
channel: '#sso-ops'
url: ${{ secrets.ROCKETCHAT_WEBHOOK }}
Loading

0 comments on commit 69fd9d1

Please sign in to comment.