# org.civicrm.afform-mock
-This is a dummy extension used for integration testing.
+This is a dummy extension used for integration testing. It should only
+enabled on development sites.
+
+## Basic Usage
```
cd afform/mock
cv en afform_mock
-phpunit5
+phpunit6 --group headless
+phpunit6 --group e2e
```
+
+## File Organization
+
+Here are a few key folders:
+
+* `ang/*`: These are example forms. Each example has 1-3 fils:
+ * `FORMNAME.aff.html` (the layout/markup)
+ * `FORMANME.aff.json` (metadata describing the form)
+ * `FORMNAME.test.php` (PHPUnit class which uses the form)
+* `tests/phpunit/api/v4/*`: These tests are focused on the behavior/dynamics
+ of the API. (To wit: if you update a `server_route`, does the live
+ `server_route` change accordingly?)
+
+## PHPUnit Logical Organization
+
+For tests in `ang/FORMNAME.test.php`:
+
+* The test focuses on using the specific form.
+* The test declares `@group e2e` and `@group ang`.
+* The test extends `Civi\AfformMock\FormTestCase`. This has helpers like `prefill(...)` and `submit(...)` (which call
+ the AJAX interface for `Afform.prefill` and `Afform.submit` respectively). It builds on `HttpTestTrait`.
+
+For tests in `tests/phpunit/api/v4`:
+
+* The tests focuses on Afform's APIv4 contract (entities/actions/parameters)
+* The tests may use either `@group e2e` (`EndToEndInterface`) or `@group headless`
+ (`HeadlessInterface`).