diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml new file mode 100644 index 0000000..4d2d27a --- /dev/null +++ b/.github/workflows/cypress.yml @@ -0,0 +1,58 @@ +name: Cypress Tests + +on: + # allows the manual trigger + workflow_dispatch: + + schedule: + - cron: '0 */1 * * *' # every hour + +jobs: + cypress-run: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout + uses: actions/checkout@v4 + # Install NPM dependencies, cache them correctly + # and run all Cypress tests + - name: Cypress run + uses: cypress-io/github-action@v6 + env: + TRACETEST_API_TOKEN: ${{secrets.TRACETEST_TOKEN}} + POKESHOP_DEMO_URL: ${{secrets.POKESHOP_DEMO_URL}} + - name: Send message on Slack in case of failure + if: ${{ failure() }} + uses: slackapi/slack-github-action@v1.24.0 + with: + # check the block kit builder docs to understand how it works + # and how to modify it: https://api.slack.com/block-kit + payload: | + { + "blocks": [ + { + "type": "header", + "text": { + "type": "plain_text", + "text": ":warning: Synthetic Monitoring Alert - E2E Cypress - Pokeshop Demo :warning:", + "emoji": true + } + }, + { + "type": "section", + "fields": [ + { + "type": "mrkdwn", + "text": "*Status:*\nFailed" + }, + { + "type": "mrkdwn", + "text": "*Pipeline:*\n<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View workflow>" + } + ] + } + ] + } + env: + SLACK_WEBHOOK_URL: ${{ secrets.SYNTETIC_MONITORING_SLACK_WEBHOOK_URL }} + SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK diff --git a/cypress/e2e/1-getting-started/home.cy.ts b/cypress/e2e/1-getting-started/home.cy.ts index a9776a0..e77fb5e 100644 --- a/cypress/e2e/1-getting-started/home.cy.ts +++ b/cypress/e2e/1-getting-started/home.cy.ts @@ -36,30 +36,25 @@ describe('Home', { defaultCommandTimeout: 60000 }, () => { }); const definition = ` - type: Test - spec: - id: aW1wb3J0cyBhIHBva2Vtb24= - name: imports a pokemon - trigger: - type: traceid - traceid: - id: \${var:TRACE_ID} - specs: - - selector: span[tracetest.span.type="http"] - name: "All HTTP Spans: Status code is not 400" - assertions: - - attr:http.status_code != 400 - - selector: span[tracetest.span.type="database"] - name: "All Database Spans: Processing time is less than 100ms" - assertions: - - attr:tracetest.span.duration < 100ms - outputs: - - name: MY_OUTPUT - selector: span[tracetest.span.type="general" name="Tracetest trigger"] - value: attr:name - - name: MY_OUTPUT_2 - selector: span[tracetest.span.type="general" name="Tracetest trigger"] - value: attr:name + type: Test + spec: + id: aW1wb3J0cyBhIHBva2Vtb24= + name: imports a pokemon + trigger: + type: cypress + specs: + - selector: span[tracetest.span.type="http"] span[tracetest.span.type="http"] + name: "All HTTP Spans: Status code is 200" + assertions: + - attr:http.status_code = 200 + - selector: span[tracetest.span.type="database"] + name: "All Database Spans: Processing time is less than 100ms" + assertions: + - attr:tracetest.span.duration < 100ms + outputs: + - name: MY_OUTPUT + selector: span[tracetest.span.type="general" name="Tracetest trigger"] + value: attr:name `; it('imports a pokemon', { env: { definition } }, () => {