testing#

The end-to-end integration tests are managed in this GitHub repository.

Execution of these tests is done using AWS CodeBuild, the html reports are published to S3 bucket nl-lacent-data-qa-reports. This location also stores the reports in plain json.

Through the use of blaze-marathon-event-dispatcher-service we can launch a quick test run whenever a deployment occurs. This service tracks marathon events and sends a request to CodeBuild, overriding the standard build environment:

environmentVariablesOverride := []*codebuild.EnvironmentVariable{
    {
        Name:  aws.String("INITIATED_BY"),
        Value: aws.String(initiatedBy),
        Type:  aws.String("PLAINTEXT"),
    }, {
        Name:  aws.String("CYPRESS_ARGUMENTS"),
        Value: aws.String("--env CYPRESS_INCLUDE_TAGS=build_verification"),
        Type:  aws.String("PLAINTEXT"),
    },
}

Anytime a test completes a message will be sent to Slack (#qa-reporting) with a brief summary of the result. This message also contains the location of the html report, available online. The reporting tool is available in the repository alongside the scenario definitions.

To allow public and secured access to the S3 bucket, a bucket policy is deployed that validates if the requests are coming from Cloudflare. A Cloudflare Worker is deployed to manage proxying to S3, thus allowing access to the bucket over a non-SSL connection, while preserving secured access through request validation.

Ultimately, access to the reports requires proper Okta role membership, which is all handled through a Cloudflare Access application.