eagle-eye-cypress-extension

Extension to send Eagle Eye messages to PubSub

Usage no npm install needed!

<script type="module">
  import eagleEyeCypressExtension from 'https://cdn.skypack.dev/eagle-eye-cypress-extension';
</script>

README

eagle-eye-cypress-extension

Message generator for Eagle Eye, JavaScript, easy build in Cypress framework

Installation

npm install eagle-eye-cypress-extension

Usage of eagle-eye-cypress-extension

Test results shoulb be posted to EagleEye PubSub after each test, to reach it place function call in cypress/support/index.js file inside Cypress listener

Cypress.on('test:after:run', (test, runnable) => { }

Default function of eagle-eye-cypress-extension module need 4 parameters:

runnable - from Cypress method, describe all data about test
filePath - path to the file with test, can be easily obtained by calling Cypress.spec.relative
externalData - data from External CI/CD system
config - stable configuration for your messages

Structure for externalData:

{
    BUILD_URL: "Build url from Jenkins/Spinnaker",
    JOB_ID: "Job Id from CI/CD system",
    REPORT: "Link to GCS where you store report from this run",
    SHORT_COMMIT: "Short commit",
    ACCESS_TOKEN: "Access token to Google Cloud",
};

Structure for configuration:

{
    "repo": "Link to GitHub repo",
    "environment": "Environment where you run your tests",
    "stack": "Stack managment/delivery/etc",
    "application": "Name of application under tests",
    "source": "cypress",
    "project": "Name of project with pubsub ox-ci-cd-devint/ox-ci-cd-prod",
    "pubSubTopic": "Name of PubSub topic ox-devint-quality-events/ox-prod-quality-events"
}

Example

eagle_eye_config.json

{
  "repo": "https://github.com/openx/ui-internal",
  "environment": "devint",
  "stack": "management",
  "application": "ui-internal",
  "source": "cypress",
  "project": "ox-ci-cd-devint",
  "pubSubTopic": "ox-devint-quality-events"
}

cypress/support/index.js

import sender from 'eagle-eye-cypress-extension';
import config from '../eagle_eye_config.json';

Cypress.on('test:after:run', (test, runnable) => {
  if ((Cypress.env('BRANCH') === 'master') || (Cypress.env('BRANCH') === 'develop')) {
    const externalData = {
        BUILD_URL: Cypress.env('BUILD_URL'),
        JOB_ID: Cypress.env('JOB_ID'),
        REPORT: Cypress.env('REPORT'),
        SHORT_COMMIT: Cypress.env('SHORT_COMMIT'),
        ACCESS_TOKEN: Cypress.env('access_token'),
    };
    sender.sendMsgToEagleEye(runnable, Cypress.spec.relative, externalData, config);
  }
});