Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The best way to test a Drupal website is to choose the lightest test layer that can exercise the behavior you care about: unit tests for isolated logic, Kernel tests for selected Drupal integrations, functional tests for site behavior, and FunctionalJavascript tests for real browser interactions that depend on JavaScript or AJAX. Add performance assertions where query or cache regressions matter, and verify that every test you count as passing actually ran.

Choose the Drupal test layer that matches the behavior

Drupal documents four PHPUnit test types. They differ in how much of Drupal and browser machinery they start, so the best choice balances fidelity against setup and runtime. Coverage percentage alone is not a reliable measure of test quality: prioritize meaningful behavior over implementation structure and wiring, and do not aim to test every line. Drupal’s test-type guidance explains the boundaries.

Test type Use it for Boundary and trade-off
Unit Isolated logic with minimal dependencies. Does not boot a full Drupal site. Drupal’s base class is DrupalTestsUnitTestCase.
Kernel Integration that needs a bootstrapped kernel and selected extensions; certain HTTP output or status, REST, and AJAX checks. Can be lighter than a full functional test when only necessary pieces are set up. It does not provide normal form submission or ordinary page-request session semantics.
Functional Web behavior and interactions requiring a full Drupal instance and simulated browser. Starts with a fresh site; each test must create its own prerequisites.
FunctionalJavascript Interactions whose behavior depends on JavaScript or AJAX. Uses a real browser, requires more tooling, and takes longer than the other PHPUnit test types.
Nightwatch JavaScript testing using the framework documented in the Drupal project. It is a documented option, but the cited guidance does not establish it as a replacement for every PHPUnit browser test.

Start with the behavior, not the tool

Ask what must be proven: a calculation, a service integration, a rendered response, a permission boundary, a form submission, or a browser-side interaction. Use the smallest layer that can observe that outcome. A lightweight test that cannot exercise the behavior is false economy; a browser test for logic that could be isolated adds setup and failure points without improving the assertion.

Set up and run PHPUnit tests reliably

For new Drupal tests, the recommended base classes are UnitTestCase, KernelTestBase, BrowserTestBase, and WebDriverTestBase. PHPUnit is the standard testing framework for Drupal 8 and later. Check the project’s Drupal, PHP, and PHPUnit compatibility before copying version-specific commands; those requirements vary. See PHPUnit in Drupal.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.

Configure the project’s own test environment

Use the PHPUnit configuration and Composer layout that belong to the project. Drupal’s running guide documents these environment variables for applicable test configurations: SIMPLETEST_BASE_URL, SIMPLETEST_DB, and BROWSERTEST_OUTPUT_DIRECTORY for Kernel and functional test output. The location of the PHPUnit executable depends on whether vendor is beside or above the Drupal root, so use the path in the project setup rather than assuming one universal path. Unit tests do not require a working Drupal installation; Kernel and browser tests require additional services.

During development, invoke the project’s PHPUnit binary on a targeted test or suite, then inspect skipped or incomplete tests and emitted output. A green-looking command is not proof if a needed driver or service was missing. For current setup and execution guidance, consult Running PHPUnit tests.

Keep functional tests isolated and reproducible

A BrowserTestBase test installs a fresh Drupal instance. Do not rely on a developer’s existing site state: explicitly provide the modules beyond defaults, accounts, permissions, configuration, and content that the scenario needs. This makes the test’s prerequisites visible and helps ensure it behaves consistently across environments. Drupal’s functional test guidance describes this simulated-browser layer.

Rank #2
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.

Assert outcomes a user or system depends on

  • For a request, assert the relevant status and response content.
  • For access control, verify the permitted and denied outcomes for the appropriate account.
  • For forms, exercise the submission behavior in a layer that supports it.
  • For JavaScript interaction, use a real-browser test rather than inferring the result from server-rendered markup.
  • For performance fixes, add an assertion for the metric that could regress.

Kernel tests can make selected HTTP assertions with Drupal’s helper, but they are not a substitute for ordinary page-request semantics. In particular, the helper does not support form submissions, and its session behavior differs from a normal page request. Use the Kernel HTTP request guidance to determine whether a given assertion fits.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use FunctionalJavascript only when browser execution matters

FunctionalJavascript tests run in a real browser. Choose them for behavior that actually depends on JavaScript or AJAX, not as the default for every page assertion. They require more tooling and take longer than unit, Kernel, or simulated-browser functional tests. Drupal’s FunctionalJavascript documentation outlines this trade-off.

Make sure the test really ran

Run JavaScript tests with PHPUnit and a functioning WebDriver/ChromeDriver setup. Confirm that Chrome or Chromium and its matching driver are available and that the driver service is reachable. Drupal warns that core/scripts/run-tests.sh may report JavaScript tests as passed when ChromeDriver is not running and the tests did not execute. Do not count such a result as a pass. Follow Drupal’s JavaScript test running and debugging guidance when diagnosing browser failures.

Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.

Add performance assertions where regressions matter

Drupal’s Gander support extends functional JavaScript tests with performance assertions. Useful basic regression checks include database query counts and cache-request counts; tests are especially relevant when protecting a performance fix. The documented Gander feature requires Drupal Core 10.2 or later, so check the project’s Core compatibility before adopting it. The requirement and capabilities are described in Drupal’s performance test guidance.

Troubleshoot common testing failures

A JavaScript test reports success but no browser ran

Check whether it was invoked with PHPUnit and whether ChromeDriver/WebDriver was running and reachable. Drupal specifically cautions that the general test runner can give a passed-looking result without executing JavaScript tests when ChromeDriver is unavailable. Rerun with the supported browser setup and inspect the test output.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A functional test fails because expected site data is missing

The test starts with a fresh Drupal installation. Add the required modules, users, permissions, configuration, and content in the test setup instead of relying on local site state.

Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft

A Kernel request test cannot submit a form or behave like a page session

That is a boundary of the Kernel HTTP helper, not necessarily an application defect. Use a functional test for form submission and normal browser-facing request behavior.

The PHPUnit command or test service cannot be found

Check the repository’s Composer layout, configured PHPUnit binary path, and project-specific PHPUnit configuration. Kernel and browser tests need additional services that a unit test does not.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

For capturing a page as an image or PDF, ScreenshotNeo provides a one-request screenshot API. Its cleanup can accept cookie and consent banners and remove more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and responses identify page verdict and billing status in headers. An MCP server provides screenshot tools for AI agents, and the free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For example, this cURL request saves a WebP screenshot of Drupal.org. See the ScreenshotNeo API documentation for request options.

Best Value
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://www.drupal.org -o shot.webp

ScreenshotNeo is a screenshot API, not a replacement for PHPUnit tests: use Drupal’s test layers to verify application behavior, and use a screenshot when you need a visual capture. Learn more at ScreenshotNeo, or sign up free for 1,000 screenshots a month with no card.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.