Functional Testing Best Practices

Test Granularity

Since one class can have multiple tests (and a functional test which tests all the methods/buttons/links on a page can have an excessive number of tests) it's a good practise to break the files down as granularly as possible.

For example, a Codeception test will check the Events Admin page. This page has multiple tabs:

  • setup

  • content

  • history

  • attendance

  • statistics

Each tabbed display has multiple fields that need to be tested. To put all tests into one file would make it difficult to maintain the test file, and time consuming to test if the developer wanted to focus on a single tab. By breaking these down into multiple files, it makes development and amendments much more streamlined.

/functional
  /events
    EventsSetupCest.php
    EventsContentCest.php
    EventsHistoryCest.php
    EventsAttendanceCest.php
    EventsStatisticsCest.php

Codeception will recursively test all files in each directory.

In the event that a specific feature on a page requires extensive tests, it is recommended that it be put in a separate file for clearly readability.

File Naming Conventions

Codeception functional tests are to be named with 'Cest' at the end of the file name.

example:

EventsSetupCest.php will be a Codeception test for the Setup tab on the Events page

CoursesCest.php will be a Codeception test for the Courses page

Last updated