Tekton
The fore ai Tekton Task runs fore ai tests inside a Docker container on a Kubernetes cluster using Tekton Pipelines.
Prerequisites
1. Tekton Pipelines installed on your cluster
Follow the Tekton installation guide if not already set up.
2. Store your service account key as a Kubernetes Secret
kubectl create secret generic cj-credentials --from-literal=service-account-key=<your-service-account-key>
Your service account key is available on the fore ai Settings page.
Run a single test
Task definition (cj-task.yaml):
apiVersion: tekton.dev/v1
kind: Task
metadata:
name: critical-journey
spec:
params:
- name: test-id
type: string
steps:
- name: run-cj-test
image: foreai/cj-action:latest
env:
- name: INPUT_SERVICE_ACCOUNT_KEY
valueFrom:
secretKeyRef:
name: cj-credentials
key: service-account-key
- name: INPUT_TEST_ID
value: $(params.test-id)
TaskRun (cj-taskrun.yaml):
apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
name: critical-journey-run
spec:
taskRef:
name: critical-journey
params:
- name: test-id
value: 'my-test-id'
Apply and run:
kubectl apply -f cj-task.yaml
kubectl apply -f cj-taskrun.yaml
Run a test suite
Task definition (cj-task.yaml):
apiVersion: tekton.dev/v1
kind: Task
metadata:
name: critical-journey
spec:
params:
- name: test-suite-id
type: string
- name: wait-timeout-seconds
type: string
default: '300'
- name: website-url-override
type: string
default: ''
- name: params-override
type: string
default: ''
steps:
- name: run-cj-tests
image: foreai/cj-action:latest
env:
- name: INPUT_SERVICE_ACCOUNT_KEY
valueFrom:
secretKeyRef:
name: cj-credentials
key: service-account-key
- name: INPUT_TEST_SUITE_ID
value: $(params.test-suite-id)
- name: INPUT_WAIT_TIMEOUT_SECONDS
value: $(params.wait-timeout-seconds)
- name: INPUT_WEBSITE_URL_OVERRIDE
value: $(params.website-url-override)
- name: INPUT_PARAMS_OVERRIDE
value: $(params.params-override)
TaskRun (cj-taskrun.yaml):
apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
name: critical-journey-run
spec:
taskRef:
name: critical-journey
params:
- name: test-suite-id
value: 'my-test-suite-id'
- name: wait-timeout-seconds
value: '360'
- name: website-url-override
value: 'https://beta-dev.my-awesome.com/2'
- name: params-override
value: '{ "param1": "value1", "param2": "value2" }'
Apply and run:
kubectl apply -f cj-task.yaml
kubectl apply -f cj-taskrun.yaml
Or use the Tekton CLI:
tkn task start critical-journey \
--param test-suite-id=my-test-suite-id \
--param wait-timeout-seconds=360 \
--param website-url-override=https://beta-dev.my-awesome.com/2 \
--showlog
Viewing logs
# Using Tekton CLI
tkn taskrun logs critical-journey-run --follow
# Using kubectl
kubectl logs --selector=tekton.dev/taskRun=critical-journey-run --follow
Available inputs
Pass each input as an env entry in the Task step using the INPUT_<NAME> naming convention.
| Parameter | Required | Default | Description |
|---|---|---|---|
test_id | No* | ID of the test to run. Provide either this or test_suite_id. | |
test_suite_id | No* | ID of the test suite to run. | |
service_account_key | Yes | Your fore ai service account key (use a Kubernetes Secret). | |
wait_timeout_seconds | No | 300 | Max seconds to wait for completion. Must be between 30 and 900. |
website_url_override | No | Override the base website URL used during test execution. | |
params_override | No | Override default parameter values. Must be a valid JSON string with string keys and values. | |
browser_type_override | No | chromium | Browser engine: chromium, firefox, or webkit. |
* Either test_id or test_suite_id must be provided.