Skip to main content

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.

ParameterRequiredDefaultDescription
test_idNo*ID of the test to run. Provide either this or test_suite_id.
test_suite_idNo*ID of the test suite to run.
service_account_keyYesYour fore ai service account key (use a Kubernetes Secret).
wait_timeout_secondsNo300Max seconds to wait for completion. Must be between 30 and 900.
website_url_overrideNoOverride the base website URL used during test execution.
params_overrideNoOverride default parameter values. Must be a valid JSON string with string keys and values.
browser_type_overrideNochromiumBrowser engine: chromium, firefox, or webkit.

* Either test_id or test_suite_id must be provided.