netresearch/orocommerce-skill · Archived

oro-k6-testing

Use when setting up or running k6 performance tests for Oro Commerce 6.1 — load testing, storefront benchmarking, checkout performance, cache warm-up, or writing k6 scripts for Oro.

First seen Jun 7, 2026

Installation

$ npx skills add netresearch/orocommerce-skill --skill oro-k6-testing

Summary

  • Use when setting up or running k6 performance tests for Oro Commerce 6.1 — load testing, storefront benchmarking, checkout performance, cache warm-up, or writing k6 scripts for Oro.
  • Also on sight of warmingUpTheApp.js, storefrontTests.js, checkoutTest.js, or metrics like load_product_listing_page_logged_in_user.
  • Triggers on 'k6', 'load test', 'performance test', 'THRESHOLD_95', 'VU', 'grafana k6', 'warm up'.

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from netresearch/orocommerce-skill · top by installs.

npx skills add netresearch/orocommerce-skill

Browse all from netresearch/orocommerce-skill

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 2
License LICENSE-CC-BY-SA-4.0
Default branch main
Open issues 1
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,770 B
  • docs SUMMARY.md 435 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 2 installs

SKILL.md

Oro Commerce k6 Performance Testing

Oro ships a stock k6 harness (oro/performance-tests) exercising the storefront from outside: browsing, login, listing/search/detail, shopping list, checkout. Plain JavaScript, k6 as a single Go binary or the grafana/k6 image, with named custom metrics you can gate individually.

The Three-Script Pipeline

performance/scripts/, in this fixed order against a cleared cache — step 1 primes what steps 2 and 3 measure, so out of order inflates the numbers.

  1. warmingUpTheApp.js — 1 VU / 60s / THRESHOLD_95=3000. Primes OPcache, Doctrine metadata, layout cache, search index.
  2. storefrontTests.js — browse flow (home, listing, search, detail, login). Typical 1 VU / 600s / THRESHOLD_95=850.
  3. checkoutTest.js — authenticated checkout from a shopping list. Needs SLID, SHIPPINGMETHOD, PAYMENT_METHOD.

Do not reuse the load-run threshold (850 ms) for the warm-up — first-touch is always slower and the run will fail on cold caches.

Environment Variables

All via -e KEY=VALUE. Every script takes BASEURL, USERNAME, PASSWORD, VU, DURATION and THRESHOLD95 (3000 warm-up, 850 load); checkoutTest.js adds SLID, SHIPPINGMETHOD (fixedproduct5) and PAYMENTMETHOD (paymentterm_1). Values and defaults: references/v6.1.md.

Hero Run Command (Docker)

docker run --rm --network host -u "$(id -u):$(id -g)" \
  -v "${PWD}/performance:/home/k6/performance" -w /home/k6/performance \
  grafana/k6:latest run \
  -e BASE_URL="https://oro.docker.local" \
  -e USERNAME="[email protected]" \
  -e PASSWORD="[email protected]" \
  -e VU=1 -e DURATION=60s -e THRESHOLD_95=3000 \
  scripts/warmingUpTheApp.js

--network host lets k6 reach localhost and compose services; -u $(id -u):$(id -g) keeps summary.html from landing root-owned. Every flag: references/docker-invocation.md.

Custom Oro Metrics

The scripts emit 14 named metrics beyond the k6 defaults, so options.thresholds can gate each one rather than a single global p95. List and examples: references/custom-metrics.md.

Reports

handleSummary() writes summary.html via k6-reporter — per-group timings, VU curves, threshold badges — alongside the stdout summary.

Key Pitfalls

  1. Load testing without warming up — cold caches inflate mean and p95 for everything. warmingUpTheApp.js at THRESHOLD_95=3000 first, always.
  2. Docker without -u $(id -u):$(id -g)summary.html lands root-owned in the mounted volume; later runs cannot overwrite it and you cannot delete it without sudo.
  3. A single global THRESHOLD_95 — a slow listing hides behind a fast login in the aggregate. Threshold the named metrics.
  4. Default --network bridge against localhost — the container cannot reach host compose services. Use --network host, or attach it to the compose network.

See Also

In references/: custom-metrics.md (the 14 named metrics) · docker-invocation.md (flag by flag, network modes, ownership) · default-metrics.md (the 9 built-ins and derived KPIs) · install.md · v6.1.md · v7.0.md