Accessibility Automation
Automated accessibility testing using axe-core and Playwright. Automation catches ~30-40% of WCAG issues; the rest require manual testing and lived experience. Both are required.
Advanced API Testing
Schema drift detection, fuzz testing, and contract-first workflows for production-grade APIs.
Advanced pytest Patterns
Beyond basic fixtures and assertions — plugins, custom hooks, fixture architecture, and test organisation at scale.
Apache JMeter
Apache JMeter is the dominant open-source, protocol-agnostic Java load testing tool — the default choice when a client has existing .jmx infrastructure or needs non-HTTP protocol coverage (JDBC, JMS, LDAP).
API Contract Testing (Advanced)
Consumer-driven contract testing ensures that services can evolve independently without breaking integrations. The consumer defines what it needs; the provider verifies it can meet that.
API Performance Testing
Measuring, baselining, and regression-testing API latency and throughput.
API Testing
Validating HTTP APIs at the integration layer — below the UI, above the database.
Browser Automation Patterns
Advanced Playwright patterns for real-world automation challenges.
Chaos Engineering
Deliberately injecting failure into a system to verify it behaves correctly under stress — before production does it for you. Chaos is a quality practice, not an ops stunt.
CI/CD Quality Gates
Automated checkpoints in a delivery pipeline that block promotion when quality thresholds aren't met. Quality gates make "definition of done" machine-enforceable rather than aspirational.
Contract Testing
Validates that two services (consumer and provider) can communicate correctly. Sits between unit tests and E2E integration tests.
Cypress
JavaScript E2E and component testing framework. Runs in the browser (not via WebDriver). Direct DOM access, automatic waiting, time-travel debugging, built-in screenshot and video recording.
Database Testing
Testing database schema, migrations, constraints, stored procedures, and data integrity — not just whether the application layer works.
Docker Service Containers for CI Testing
Run ephemeral Docker service containers (Postgres, Redis, WireMock, RabbitMQ) inside CI jobs so every test run starts from a clean, isolated state with no shared infrastructure.
E2E Framework Design
Architecting a maintainable E2E test framework — the code behind the tests.
Flaky Test Management
A test that sometimes passes and sometimes fails on the same code is a flaky test. Flaky tests erode trust in the test suite — engineers start re-running failures instead of investigating them.
GraphQL Testing
Testing GraphQL APIs differs from REST: single endpoint, type system, queries vs mutations vs subscriptions, N+1 loader patterns, and schema-first contracts.
Infrastructure Testing
Testing infrastructure-as-code before it reaches production: static validation, compliance scanning, and live end-to-end infrastructure tests.
k6
k6 is a code-first load testing tool written in Go, scripted in JavaScript/TypeScript — VU model, threshold-based pass/fail, native WebSocket support, and first-class CI integration via exit codes.
Load Testing — Advanced
Performance testing at scale: throughput, latency, saturation, and breakpoints. Goes beyond simple scripts into realistic traffic shaping, SLO validation, and CI integration.
Mock Strategies
Test doubles — mocks, stubs, fakes, spies — are the tool for isolating units from their dependencies. Choosing the wrong double leads to tests that pass but miss real bugs.
Mutation Testing
Automatically introducing bugs (mutations) into source code to verify that tests catch them. A test suite with 100% line coverage can still be useless if it never asserts anything.
Parallel Test Execution
Running tests concurrently to compress feedback time — without introducing isolation failures.
Performance Testing
Validates that a system behaves acceptably under expected and peak load. Catches performance regressions before they become production incidents.
Performance Testing Capacity Planning
Consultant playbook for sizing test environments proportionally, deriving load targets from business data, and translating soak test results into procurement recommendations with headroom calculations.
Playwright Advanced
Advanced Playwright patterns beyond basic locators and clicks: custom fixtures, API testing, tracing, code generation, CI optimisation, and the Healer agent for self-healing selectors.
Postman and Newman
Postman for API exploration and collection building; Newman for running those collections in CI.
Security Automation
Automating security checks as part of CI/CD — SAST (static analysis), DAST (dynamic scanning), dependency auditing, container scanning, and secrets detection.
Selenium Grid 4
Running Selenium tests across browsers and machines in parallel with Grid 4's router/hub/node architecture.
Self-Healing Test Frameworks
Self-healing test frameworks automatically repair broken element locators when the UI changes, reducing maintenance burden. Healenium wraps Selenium with ML-based fallback selectors. Playwright Healer auto-opens a GitHub PR with the fix. Cloud platforms (Mabl, testRigor) remove locators entirely.
Test Architecture
Structural patterns for maintainable automation code. Tests are code — they need design, abstraction, and refactoring the same as production code.
Test Data Generation (Technical)
Advanced patterns for generating test data at scale — deterministic factories, database seeding strategies, and generating data with the right statistical properties for load and edge case testing.
Test Observability
Treating the test suite as a system to be monitored — tracking health, trends, and failure patterns over time.
Test Reporting and Dashboards
Making test results visible, actionable, and trackable over time.
Testcontainers
Library that spins up real Docker containers in tests — actual PostgreSQL, Redis, Kafka, etc. instead of mocks. Tests talk to real services; no fakes, no mocks, no in-memory substitutes.
Visual Testing
Automated comparison of UI screenshots against approved baselines to catch unintended visual regressions.
WebSocket Testing
Full testing stack for WebSocket — protocol fundamentals, Playwright functional tests with `page.routeWebSocket()`, k6 load testing with custom metrics, SSE comparison, contract testing, and CI integration patterns.
WireMock
Service virtualisation tool — stubbing HTTP dependencies so you can test your service without running real downstream services. Available as a Java library, standalone server, and Docker image.