| name | activitypub-testing |
| description | Testing patterns for PHPUnit and Playwright E2E tests. Use when writing tests, debugging test failures, setting up test coverage, or implementing test patterns for ActivityPub features. |
ActivityPub Testing
This skill provides guidance on writing and running tests for the WordPress ActivityPub plugin.
Quick Reference
For complete testing commands and environment setup, see Testing Reference.
Key Commands
- PHP:
npm run env-test - E2E:
npm run test:e2e - JavaScript:
npm run test:unit
PHPUnit Testing
Test Structure
<?php
namespace Activitypub\Tests;
use WP_UnitTestCase;
class Test_Feature extends WP_UnitTestCase {
public function set_up(): void {
parent::set_up();
// Setup
}
public function tear_down(): void {
// Cleanup
parent::tear_down();
}
public function test_functionality() {
// Test implementation
}
}
Common Test Patterns
For transformer and handler testing patterns, see Testing Reference - Writing Effective Tests.
For mocking HTTP requests and other utilities, see Testing Reference - Test Utilities.
Test Groups
Use @group annotations:
/**
* @group activitypub
* @group federation
*/
public function test_federation_feature() {
// Test code
}
E2E Testing with Playwright
Basic E2E Test
const { test, expect } = require('@playwright/test');
test('ActivityPub settings page loads', async ({ page }) => {
await page.goto('/wp-admin/options-general.php?page=activitypub');
await expect(page.locator('h1')).toContainText('ActivityPub');
});
Testing Federation
test('WebFinger discovery works', async ({ page }) => {
const response = await page.request.get('/.well-known/webfinger', {
params: {
resource: 'acct:admin@localhost:8888'
}
});
expect(response.ok()).toBeTruthy();
const json = await response.json();
expect(json.subject).toBe('acct:admin@localhost:8888');
});
Test Data Factories
For creating test data (users, posts, comments), see Testing Reference - Test Utilities.
Coverage Reports
See Testing Reference for detailed coverage generation instructions.
Debugging Tests
Debug Output
// In tests
var_dump( $data );
error_log( print_r( $result, true ) );
// Run with verbose
npm run env-test -- --verbose --debug
Isolating Tests
# Run single test method
npm run env-test -- --filter=test_specific_method
# Stop on first failure
npm run env-test -- --stop-on-failure