Setupยถ

WAFT (Warp Automation Framework for Testing)ยถ

A comprehensive automation framework for testing Cloudflareโ€™s WARP client across multiple operating systems and architectures.

๐Ÿš€ Overviewยถ

WAFT provides a unified framework for:

  • Multi-OS Testing: Ubuntu, Windows, RHEL/AlmaLinux, Debian

  • Cross-Architecture Support: Intel/AMD64 and ARM64

  • VM Management: Automated VM provisioning and configuration

  • Test Orchestration: Comprehensive test suite execution

  • CI/CD Integration: GitLab CI/CD pipeline templates

๐Ÿ“ฆ Componentsยถ

Core Framework (waft/src/waft/)ยถ

  • CLI Interface: Command-line tools for VM and test management

  • VM Management: Automated VM creation, configuration, and cleanup

  • Test Execution: Pytest-based test runner with WARP client integration

  • Configuration Management: Centralized configuration and secrets handling

Test Pipeline (waft/.gitlab/ci/)ยถ

  • CI/CD Templates: Ready-to-use GitLab CI/CD templates for external projects

  • Multi-OS Support: Comprehensive OS and architecture matrix testing

๐Ÿ“– Documentationยถ

Test Pipeline Documentationยถ

For comprehensive information about using WAFTโ€™s CI/CD pipeline system:

๐Ÿ‘‰ WAFT Test Pipeline Documentation

This documentation covers:

  • External Integration: How to use WAFT testing in your projects

  • OS Version Support: Complete matrix of supported operating systems

Core Framework Documentationยถ

๐Ÿ‘‰ WAFT Framework Documentation

  • CLI Reference: At-a-glance

  • CLI Commands: waft --help and waft <command> --help

  • Documentation: waft show --help

  • VM Management: waft vm --help

  • Configuration: waft config --help

๐Ÿš€ Quick Startยถ

For External Projectsยถ

Include WAFT testing in your project:

# .gitlab-ci.yml
stages:
  - test_stage
include:
  - component: $CI_SERVER_FQDN/cloudflare/ztqa/waft/test-with-waft@latest
    inputs:
      runs-on:
        - ubuntu_24_04_multiarch_arm
        - ubuntu_22_04_multiarch_intel
      test-path: src/
      stage: test_stage
WAFT Testing CI Component Inputsยถ

Input

Description

Default

Type

Required

pytest-markers

Pytest markers to run

""

string

No

pytest-args

Pytest args to run

""

string

No

runs-on

List of VMs to run on

-

list

Yes

test-path

Path to tests to run

-

string

Yes

release-track

Release track of WARP client to use for testing (ga, beta, nightly)

ga

string

No

stage

Stage to run tests in

-

string

Yes

allow-failure

Allow tests to fail

false

boolean

No

test-timeout

Test timeout

1h

string

No

test-job-name

Name of job where tests will be run

waft-${CI_PROJECT_NAME}

string

No

needs

Jobs required to be run before component should be run

null

array

No

Available VM Optionsยถ

The following options are available for the runs-on input:

Linuxยถ
  • almalinux8_multiarch_intel, almalinux8_multiarch_arm

  • debian_bullseye_multiarch_intel, debian_bullseye_multiarch_arm

  • debian_bookworm_multiarch_intel, debian_bookworm_multiarch_arm

  • fedora34_multiarch_intel, fedora34_multiarch_arm

  • fedora35_multiarch_intel, fedora35_multiarch_arm

  • ubuntu_20_04_multiarch_intel, ubuntu_20_04_multiarch_arm

  • ubuntu_22_04_multiarch_intel, ubuntu_22_04_multiarch_arm

  • ubuntu_24_04_multiarch_intel, ubuntu_24_04_multiarch_arm

Windowsยถ
  • windows_11_intel, windows_11_arm

  • windows_2022_intel

For Local Executionยถ

Run WAFT tests from your system:

  1. ๐Ÿ’ป Prepare test systems

  2. โš™๏ธ Configure clients to be tested, either:

  3. ๐Ÿงช Run tests - See VS Code Test Configuration Guide

๐Ÿ—๏ธ Architectureยถ

WAFT Framework
โ”œโ”€โ”€ Core Framework (waft/)
โ”‚   โ”œโ”€โ”€ VM Management
โ”‚   โ”œโ”€โ”€ Test Orchestration
โ”‚   โ”œโ”€โ”€ Configuration Management
โ”‚   โ””โ”€โ”€ CLI Interface
โ”œโ”€โ”€ Test Pipeline (.gitlab/waft_test_pipeline/)
    โ”œโ”€โ”€ CI/CD Templates
    โ”œโ”€โ”€ OS Job Definitions
    โ””โ”€โ”€ Reporting Integration

๐Ÿ“Š Supported Operating Systemsยถ

OS Family

Versions

Architectures

Matrix Size

Ubuntu

24.04, 22.04, 20.04 LTS

Intel, ARM64

6 combinations

Windows

11, 10, Server 2022, 2019

Intel, ARM64ยน

5 combinations

RHEL/AlmaLinux

AlmaLinux 8

Intel, ARM64

2 combinations

Debian

13, 12, 11 LTS

Intel, ARM64

6 combinations

ยน ARM64 support varies by OS version

๐Ÿ“ž Supportยถ


Ready to get started? Check out the following references for detailed setup instructions and examples:

Getting Startedยถ

Complete the default Python Environment Setup configuration.

Executeยถ

Finalize your local WAFT Framework Configuration and Setup.

Contributeยถ

Check out our best practices for contributing to the framework.

Run tests via CLI!