Skip to main content

Blog

QA testing insights, AI agent tips, and skill development guides

All Articles

Page 2 of 27

Tutorial
2026-07-13

Add a PostgreSQL Service-Container Health Check in GitHub Actions

Add a PostgreSQL service-container health check in GitHub Actions so migrations and tests wait for readiness instead of racing database startup.

Reference
2026-07-13

AI Testing Engineer Salary and Skills in 2026

Compare AI testing engineer salary benchmarks for 2026, identify high-value technical skills, and build evidence that supports a stronger compensation offer.

Reference
2026-07-13

API Contract-Testing Interview Scenarios

Practice API contract-testing interview scenarios on consumer needs, provider verification, schema evolution, messaging, deployment gates, and failure triage.

Performance
2026-07-13

Artillery Load Testing in Node.js: Complete 2026 Guide

A complete Artillery load testing guide for Node.js in 2026: install, write YAML scenarios, test HTTP and WebSocket, add JS processors, assert thresholds, and run in CI.

Tutorial
2026-07-13

Assert a Specific Log Level with pytest caplog

Assert specific Python log levels with pytest caplog, isolate logger records, verify exception metadata, and avoid tests coupled to formatted output.

Tutorial
2026-07-13

Assert That a Playwright List Has No Duplicate Items

Detect duplicate list items in Playwright with stable keys, normalized text, retrying assertions, and diagnostics that identify every repeated record.

Tutorial
2026-07-13

Assert That a Table Column Is Sorted in Playwright

Assert sorted table columns in Playwright across numbers, dates, nulls, and locale-aware text with stable extraction and diagnostic failures.

Comparison
2026-07-13

Braintrust vs Langfuse: LLM Eval and Observability (2026)

Braintrust vs Langfuse compared for 2026: eval workflows, tracing, datasets, scoring, CI, self-hosting, pricing shape, and TS + Python SDK examples to pick the right platform.

Tutorial
2026-07-13

Build a Rerun-Failed-Tests Workflow in CircleCI

Build a CircleCI rerun-failed-tests workflow that persists Playwright failure state, retries only failed tests in a follow-up job, and reports honestly.

Tutorial
2026-07-13

Cache Cypress Sessions Across Spec Files

Cache Cypress sessions across spec files with cy.session, reliable validation, collision-safe IDs, and realistic behavior in parallel CI runs.

Tutorial
2026-07-13

Cache Playwright Browser Binaries in CircleCI

Cache Playwright browser binaries in CircleCI with versioned keys, correct paths, safe fallbacks, and installation checks that prevent stale builds.

Tutorial
2026-07-13

Cache Playwright Browsers in GitHub Actions

Cache Playwright browsers in GitHub Actions with version-safe keys, Linux dependency installation, cache validation, and evidence that caching pays off.

Tutorial
2026-07-13

Cache the pnpm Store for Tests in GitLab CI

Cache the pnpm store in GitLab CI with lockfile-derived keys, project-local paths, trusted writers, and pull-only test jobs that stay reproducible.

Guide
2026-07-13

Cancel Stale E2E Runs When a New Commit Arrives

Cancel stale E2E runs on new commits with branch-scoped GitHub Actions concurrency and GitLab interruptible jobs while protecting deploys and cleanup.

Tutorial
2026-07-13

Canvas Pixel Assertion Testing in Playwright

Test canvas pixels in Playwright with deterministic rendering, getImageData sampling, PNG decoding, tolerances, and focused rendering diagnostics.

Tutorial
2026-07-13

Change Browser Geolocation During a Playwright Test

Change browser geolocation during a Playwright test and verify live location updates, permission loss, accuracy handling, and location-aware network calls.

Guide
2026-07-13

Clean Up Orphaned Test Data After CI Failures

Clean up orphaned test data after cancelled or crashed CI jobs using ownership markers, leases, idempotent sweepers, retention windows, and safety guards.

API Testing
2026-07-13

Clean Up Pact Provider-State Test Data

Clean up Pact provider-state test data with deterministic identities, setup and teardown handlers, transaction-aware isolation, and leak detection.

Tutorial
2026-07-13

Comment a Test Summary on Pull Requests with GitHub Actions

Comment a clear test summary on every pull request with GitHub Actions, update one sticky comment, handle failures, and keep forked contributions safe.

Tutorial
2026-07-13

Compare Nested Dictionary Floats with pytest.approx()

Compare nested dictionary floats with pytest.approx using recursive leaf checks, path-aware tolerances, exact structure validation, and readable failures.

Tutorial
2026-07-13

Compare One Element with Masks in Playwright Visual Tests

Compare one Playwright element while masking dynamic subregions, stabilizing snapshots, controlling mask scope, and preserving meaningful visual coverage.

AI Testing
2026-07-13

Compare Prompt Versions with a Promptfoo Variable Matrix

Compare prompt versions with a Promptfoo variable matrix that holds model settings constant, expands shared inputs, and exposes quality regressions.

Tutorial
2026-07-13

Configure a Different Proxy per Playwright Project

Configure a different Playwright proxy per project for regional, tenant, and network-path coverage without leaking credentials or duplicating test suites.

Tutorial
2026-07-13

Configure HTTP Basic Authentication in Playwright

Configure Playwright HTTP Basic Authentication per project, constrain credential origins, cover browser and API requests, and prevent secret exposure.

Tutorial
2026-07-13

Configure Playwright baseURL for Multiple Environments

Configure Playwright baseURL for local, staging, and preview environments with validated targets, project overrides, and safe relative navigation.

Tutorial
2026-07-13

Configure Playwright Traces Only on the First Retry

Configure Playwright trace on first retry to capture decisive CI evidence while controlling storage, runtime overhead, and noisy test artifacts.

Tutorial
2026-07-13

Create a PostgreSQL Database per Test with Testcontainers

Create a PostgreSQL database per test with Testcontainers, safe parallel naming, real migrations, connection cleanup, and fast suite-level container reuse.

Tutorial
2026-07-13

Cross-Domain Authentication with Cypress origin()

Automate cross-domain authentication with Cypress origin(), pass credentials safely, validate redirects, and keep identity-provider tests reliable.

Guide
2026-07-13

Cypress “Element Is Detached from the DOM” Fix

Fix Cypress element detached from the DOM failures by re-querying after reactive renders, ending action chains, and synchronizing on observable application state.

Guide
2026-07-13

Cypress “Timed Out Retrying After 4000ms” Fix

Fix Cypress timed out retrying after 4000ms errors by separating selector, request, rendering, actionability, and test-isolation causes with evidence.

Guide
2026-07-13

Cypress “Uncaught Exception” Test Failure Fix

Fix Cypress uncaught exception failures with scoped, evidence-based handling that suppresses only known noise while preserving real application defects.

Guide
2026-07-13

Cypress intercept() Streaming-Response Limitations

Understand Cypress intercept streaming-response limitations for SSE and chunked HTTP, then design reliable tests for partial data, reconnects, and completion.

Comparison
2026-07-13

Database Seeding per Test vs per Suite

Compare database seeding per test vs per suite, including transaction rollback, fixture ownership, parallel workers, and hybrid patterns for reliable fast suites.

AI Testing
2026-07-13

DeepEval Tool Correctness Metric Example

Use DeepEval Tool Correctness Metric with real agent traces, expected calls, strict arguments, ordering, and regression cases that expose wrong tools.

Guide
2026-07-13

Deterministic Faker Seeds in Parallel Tests

Design deterministic Faker seeds for parallel tests, reproduce failures by test identity, avoid worker collisions, and preserve realistic data variation.

Guide
2026-07-13

Disable Animations and Carets in Playwright Screenshots

Disable animations and blinking carets in Playwright screenshots, stabilize visual baselines, and keep meaningful UI regressions visible in CI.

Tutorial
2026-07-13

Ensure pytest Yield-Fixture Cleanup After Failure

Make pytest yield-fixture cleanup reliable when tests or setup fail, using safe fixture boundaries, finalizers, context managers, and verified teardown.

Tutorial
2026-07-13

Exclude Browser and OS Combinations from a GitHub Actions Matrix

Exclude browser and OS combinations from a GitHub Actions matrix while preserving targeted Playwright coverage, readable jobs, and intentional failure policy.

Tutorial
2026-07-13

Exclude Generated Files from Jest Coverage

Exclude generated files from Jest coverage without hiding authored code, using precise collection rules, Istanbul directives, and auditable thresholds.

Tutorial
2026-07-13

Factory Boy post_generation for Many-to-Many Test Data

Use Factory Boy post_generation for Django many-to-many test data with explicit related objects, safe defaults, through models, batching, and isolated assertions.

Guide
2026-07-13

Fail CI Only on New Coverage Regressions

Enforce changed-code coverage in CI while leaving legacy gaps visible, using diff-aware line checks, stable baselines, and actionable pull request failures.

Guide
2026-07-13

Handle Missing Requests During Playwright HAR Replay

Configure Playwright HAR replay notFound fallback safely, diagnose unmatched requests, prevent accidental live traffic, and keep recordings maintainable.

Tutorial
2026-07-13

How to Shard Playwright Tests by File Instead of Project

Shard Playwright tests by file with predictable CI distribution, avoid project duplication, inspect shard membership, and balance uneven spec runtimes.

Tutorial
2026-07-13

How to Test a Debounced Search Input in Playwright

Learn deterministic Playwright debounce testing with the Clock API, request inspection, boundary checks, and no brittle fixed sleeps in your search tests.

Tutorial
2026-07-13

How to Test WebSocket Messages in Cypress

Test WebSocket messages in Cypress by controlling server events, observing browser state, and asserting reconnection, ordering, and malformed-frame behavior reliably.

Tutorial
2026-07-13

How to Test WebSocket Reconnection in Playwright

Test WebSocket reconnection in Playwright with deterministic server closes, real offline transitions, retry assertions, and duplicate-subscription checks.

Tutorial
2026-07-13

How to Wait for a Dynamic URL Response in Playwright

Learn how to wait for a dynamic URL response in Playwright by matching paths, query parameters, methods, status codes, and concurrent requests safely.

Tutorial
2026-07-13

HTML5 Drag and Drop with DataTransfer in Playwright

Implement HTML5 drag and drop with DataTransfer in Playwright, including custom MIME payloads, file drops, event diagnostics, and reliable outcome checks.

Tutorial
2026-07-13

In-Source Testing with import.meta.vitest

Use import.meta.vitest for focused in-source testing with correct Vitest configuration, TypeScript typing, production dead-code removal, and maintainable boundaries.

Tutorial
2026-07-13

Intercept GraphQL Requests by Operation Name in Cypress

Intercept GraphQL requests by operation name in Cypress to stub one query or mutation, preserve unrelated traffic, and make network assertions precise.

QA Testing Blog Articles — Page 2 | QASkills.sh