Testes E2E workflow (BrasilAPI/BrasilAPI)
The Testes E2E workflow from BrasilAPI/BrasilAPI, explained and optimized by Latchkey.
CI health: F - at risk
Point runs-on at Latchkey and get caching, run de-duplication, job timeouts, SHA-pinned actions, self-healing for flaky steps, and up to 58% lower cost, applied automatically.
What it does
This is the Testes E2E workflow from the BrasilAPI/BrasilAPI repository, a real project running GitHub Actions. It is shown here with attribution under its MIT license.
Below, Latchkey shows a faster, safer version produced by its optimization engine.
The workflow
name: Testes E2E
on: [pull_request]
jobs:
e2e-tests:
name: Rodar testes E2E
runs-on: ubuntu-latest
steps:
- name: Puxar o código do commit
uses: actions/checkout@v4
- name: Instalar o Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Cacheando dependencias
id: cache_dependencies
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-dependencies-${{ hashFiles('./package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Instalar as dependências do npm
if: steps.cache_dependencies.outputs.cache-hit != 'true'
run: npm ci
- name: Rodar testes
uses: nick-fields/retry@v2
with:
timeout_minutes: 5
retry_wait_seconds: 120
max_attempts: 3
retry_on: error
command: npm test
- name: Archive code coverage results
uses: actions/upload-artifact@v4
with:
name: code-coverage-report
path: reports/coverage/lcov.info
The same workflow, on Latchkey
Estimated ~20% faster on cache hits, plus fewer wasted runs and a safer supply chain. Added and changed lines are highlighted.
name: Testes E2E on: [pull_request] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: e2e-tests: timeout-minutes: 30 name: Rodar testes E2E runs-on: latchkey-small steps: - name: Puxar o código do commit uses: actions/checkout@v4 - name: Instalar o Node.js uses: actions/setup-node@v4 with: cache: 'npm' node-version: '20.x' - name: Cacheando dependencias id: cache_dependencies uses: actions/cache@v4 with: path: node_modules key: ${{ runner.os }}-dependencies-${{ hashFiles('./package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Instalar as dependências do npm if: steps.cache_dependencies.outputs.cache-hit != 'true' run: npm ci - name: Rodar testes uses: nick-fields/retry@v2 with: timeout_minutes: 5 retry_wait_seconds: 120 max_attempts: 3 retry_on: error command: npm test - name: Archive code coverage results uses: actions/upload-artifact@v4 with: name: code-coverage-report path: reports/coverage/lcov.info
What changed
- Run on Latchkey managed runners with one line (
runs-on), which apply the fixes below automatically and self-heal transient failures. This example useslatchkey-small; pick the runner size that fits the job. - Cancel superseded runs when a branch or PR gets a newer push.
- Cache dependency installs on the setup step so they are served from cache.
- Add a job timeout so a hung step cannot burn hours of runner time.
1 third-party action is referenced by a movable tag. Pin it to the commit SHA (Latchkey resolves and applies this automatically) so a repointed tag cannot change what runs.
What Latchkey heals here
This workflow has steps that commonly fail on transient issues (network, registries, flaky browsers). On Latchkey managed runners they are detected, retried, and self-healed instead of failing your build:
- Dependency installs
- End-to-end and browser tests
This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.