Test Workflows Artifacts
Testkube can be configured to retrieve any file artifacts that are produced by tools and scripts executed in a Test Workflow. Collected artifacts are then retrievable either via the API/CLI (see CLI Reference) or via the Dashboard in the Artifacts Tab.
Testkube stores Artifacts in the backend using Minio - Read More.
Specify which artifacts to collect by adding an artifacts property to the corresponding Test steps
(see schema reference), for example
- name: Example step with artifacts
shell: example-command
artifacts:
paths:
- "output/**/*"
will collect all files/folders produced by the example-command under the output folder.
Artifacts are resolved relatively to the workingDir, so for example
- name: Saving artifacts
workingDir: /data/repo/test/cypress/cypress-13/cypress/videos
artifacts:
paths:
- "**/*"
will collect all files in the ../videos folder.
Testkube supports Glob patterns for path matching as provided by the doublestar library.
Compressing Artifacts
If you want to compress specific artifacts, you can add a compress property specifying the name of a target archive:
- name: Saving compressed logs
artifacts:
compress:
name: "logs.tar.gz"
paths:
- "logs/*.log"
Artifacts from Parallel Executions
Collecting artifacts from parallel executions works the same; specify
an artifacts property as shown above for parallel nodes, collected artifacts will be placed under a folder
named after the node index.
You could also use the fetch property to copy files back from parallel nodes and then using a separate artifacts step to save them:
- name: Run tests
parallel:
count: 2
transfer:
- from: /data/repo
fetch:
- from: /data/out
to: /data/artifacts/instance-{{ index }}
container:
env:
- name: PLAYWRIGHT_HTML_REPORT
value: /data/out/playwright-report
shell: "npx playwright test --output /data/out --shard {{ index + 1 }}/{{ count }}"
- condition: always
artifacts:
workingDir: /data/artifacts
paths:
- "**/*"
If you have a step specifically for artifact collections, be sure to use condition: always as shown in the example
above to ensure that artifacts are collected, otherwise this step could be skipped if a previous step fails.
JUnit Report Extraction
Testkube automatically scans all artifacts for .xml files that are valid JUnit XML reports and parses
their contents. This parsed data is then made available via JUnit Reports Visualization for detailed inspection
and filtering of results.
More specifically, Testkube extracts:
- The number of JUnit Testcases executed per Workflow
- Their individual pass/fail statuses
- Detailed test case information including error messages and stack traces (where applicable)
This extraction enables comprehensive reporting and visualization of JUnit testcase executions and their corresponding statuses per Workflow.
You can view summarized results on the Execution Overview tab and access detailed, filterable reports on the dedicated Reports tab.
For a deep dive into how Testkube processes and visualizes JUnit reports, including screenshots and usage tips, please refer to our JUnit Reports Processing and Visualization documentation.
Performance Report Extraction
Testkube also scans uploaded JSON artifacts for supported performance-test reports and can ingest their aggregated values as Granular Metrics. The original files remain available as normal artifacts.
Supported report artifacts include:
- k6
summary.jsonexports created with--summary-export, registered ask6.summaryreports. - Artillery JSON reports created with
-o <report-file>, registered asartillery.report. - JMeter dashboard
statistics.jsonfiles created with-e -o <report-directory>, registered asjmeter.statisticsreports.
For Artillery workflows, write the JSON report into an artifact directory. For example, a command such as
/home/node/artillery/bin/run run artillery-smoke-test.yaml -o /data/artifacts/artillery-report.json creates an
Artillery aggregate report that Testkube can detect when /data/artifacts/**/* is uploaded.
For JMeter workflows, make sure the generated dashboard report directory is included in the step artifacts. For
example, a command such as jmeter -n -t test.jmx -l /data/artifacts/jtl-report.jtl -e -o /data/artifacts/report
creates /data/artifacts/report/statistics.json, which Testkube can detect when /data/artifacts/**/* is
uploaded.