@studyportals/goldeneye-compression-check
v1.0.1
Published
Audits Brotli compression on microservice assets, with an AWS CDK construct for CodePipeline integration.
Maintainers
Keywords
Readme
@studyportals/goldeneye-compression-check
Audits Brotli compression on microservice assets, with an AWS CDK construct for CodePipeline integration.
How it works
Uses a headless Chromium browser (via Playwright) to intercept real network requests. Supports two modes:
- discover (default) — loads one or more service pages, intercepts all outgoing requests to Studyportals-owned domains, and captures their compression headers.
- direct — loads each provided URL and captures only the document response, grouped by hostname.
Each text asset (HTML, JS, CSS, JSON, SVG) is classified as:
- PASS —
content-encoding: br - WARNING — compressed with something other than Brotli
- FAILED — no compression
Results are written to reports/compression-results.json. Exits with code 1 if any domain has a FAILED asset.
Owned domains
Requests are matched against a list of Studyportals-owned domains in sdk/registry.ts.
Examples: service.prtl.co, service.mastersportal.com, 1234.mastersportal.com (page hostname)
CLI usage
URLS='https://www.example.com/;https://www.example.com/search/' node dist/src/sdk/checker.js| Variable | Description |
| -------- | -------------------------------------------------------------- |
| URLS | Semicolon-separated list of page URLs to load in discover mode |
Package layout
src/
common/ — shared types and logger
sdk/ — runtime: checker, registry, types
cdk/ — AWS CDK construct for CodePipelineImport paths:
import { runCompressionCheck } from '@studyportals/goldeneye-compression-check/sdk';
import { CompressionTests } from '@studyportals/goldeneye-compression-check/cdk';AWS CDK integration
import { CompressionTests } from '@studyportals/goldeneye-compression-check/cdk';
const compressionTests = new CompressionTests(this, 'compression-support', {
serviceDescriptor: 'my-service',
testReportsBucket: myS3Bucket,
lambdaCodePath: path.join(__dirname, '../functions/compression-checker/dist')
});CompressionTestsProps
| Property | Type | Description |
| ---------------------- | --------- | -------------------------------------------- |
| serviceDescriptor | string | Used to name the Lambda function |
| testReportsBucket | IBucket | S3 bucket where results are uploaded |
| serviceDiscriminator | string? | Optional suffix for the Lambda function name |
| lambdaCodePath | string | Path to the compiled Lambda handler |
Prerequisites
Requires Node.js 24 and Yarn 4 via Corepack:
corepack enable && corepack prepare yarn@stable && corepack use yarn@stableCommands
yarn install # Install dependencies
yarn build # Compile TypeScript to dist/
yarn test # Run Jest tests
yarn lint # Lint TypeScript sources
yarn pack # Build and pack for publishingPublishing
yarn publish