Home - Stefanius67/HtmlTestCase GitHub Wiki

Very often the main purpose of a PHP package is to generate any specific HTML code. This extension of the existing base class can mainly be used for the automated testing of such packages with PHPUnit.

In addition to numerous methods with which the presence or the content of certain tags, elements or attributes within an HTML block can be checked, the class also offers the possibility of checking an HTML document or block as a whole for its validity. (validates for W3C - HTML5)

This validation is done with a cURL request to the REST API from The Nu Html Checker that is reachable at https://html5.validator.nu.

As a small addition, a text can be checked to ensure that it does not contain any HTML tags

Available tests

This package contains a class that extends the PHPUnit TestCase class to perform HTML test for multiple purposes:

It supports several methods to test/assert for

  • valid HTML5 document/block
  • existing HTML tag/element/attribute
  • HTML tag/element/attribute value equals expected
  • HTML tag/element/attribute contains expected part
  • HTML tag/element has requested style set to expected value
  • given text is plain text (means, text doesn't contain any HTML tags)

For all available methods see the full class reference.

Requirements

The class is designed for use with the Version 9 of PHPUnit and to do the cURL request for HTML validation, the PHP libraries cURL and OpenSSL are required.

Usage

You can integrate the source file HtmlTestCase.php into your own PHPUnit Test-infrastructure (you may have to rename or change the namespace) or use it as it is.

The only change to your own test code is to use the HtmlTestCase class instead of TestCase as the base class for your test cases. The phpunit.xml is an example configuration that calls the tests from the ExampleTest directory.

The examples shows two tests for each assertion-method of the package. The first of each is passed successful, the second one fails so you can see the generated error messages.