upskill-event-manager/docs/hvac-role-testing-plan.md
bengizmo b848eeaa43 fix(testing): Update Playwright test docs and identify missing test user
- Update docs/mvp-integration-testing-plan.md, docs/REQUIREMENTS.md, wordpress-dev/README.md,
  and memory-bank/playwright-test-plan.md with correct Playwright test execution commands
- Replace outdated references to ./tests/run-tests.sh pw with wordpress-dev/bin/run-tests.sh --e2e
- Document that test_trainer user is missing on staging environment, causing E2E test failures
- Note absence of automated test user setup script despite documentation references

The Playwright E2E tests are failing because the required test user (test_trainer) does not
exist on the staging environment. When attempting to log in via the custom community login
page, the browser is redirected to the standard WordPress login page instead of the dashboard.

This commit does not include the actual creation of the test user or the development of an
automated setup script, which are planned as follow-up tasks.

Resolves: #MVP-123 (Integration test debugging)
2025-04-23 17:59:59 -03:00

189 lines
No EOL
5 KiB
Markdown

# HVAC Role Manager Testing Plan
## Overview
This document outlines the simplified approach to testing the HVAC Role Manager in the staging environment, focusing on core role creation and capability management.
## Test Implementation Structure
```mermaid
graph TD
A[Setup Test Environment] --> B[Create Test Suite]
B --> C[Implement Tests]
C --> D[Document & Demonstrate]
subgraph "1. Setup Test Environment"
A1[Configure vendor PHPUnit] --> A2[Setup bootstrap file]
A2 --> A3[Configure test paths]
end
subgraph "2. Create Test Suite"
B1[Create TestCase class] --> B2[Setup fixtures]
B2 --> B3[Configure isolation]
end
subgraph "3. Implement Tests"
C1[WordPress Capabilities] --> C2[HVAC Capabilities]
C2 --> C3[Role Management]
end
subgraph "4. Document & Demonstrate"
D1[Run tests] --> D2[Generate report]
D2 --> D3[Create guide]
end
```
## Implementation Steps
### 1. Test Environment Setup (30 mins)
- Configure vendor PHPUnit
```bash
./vendor/bin/phpunit --version
```
- Setup bootstrap-staging.php
```php
require_once dirname(__DIR__) . '/vendor/autoload.php';
require_once dirname(__DIR__) . '/vendor/yoast/wp-test-utils/src/WPIntegration/bootstrap.php';
```
- Configure test isolation
```php
// In bootstrap-staging.php
tests_add_filter('muplugins_loaded', function() {
require dirname(__DIR__) . '/hvac-role-manager.php';
});
```
### 2. Test Suite Creation (45 mins)
```php
class HVAC_Role_Manager_Test extends WP_UnitTestCase {
protected $role_manager;
protected $test_role_name = 'hvac_test_trainer';
public function setUp() {
parent::setUp();
$this->role_manager = new HVAC_Role_Manager();
}
public function tearDown() {
remove_role($this->test_role_name);
parent::tearDown();
}
}
```
### 3. Core Tests Implementation (1.5 hours)
#### WordPress Core Capabilities
```php
public function test_wp_core_capabilities() {
$capabilities = [
'read' => true,
'edit_posts' => true,
'delete_posts' => true
];
$role = $this->role_manager->create_role($this->test_role_name, 'Test Trainer', $capabilities);
$this->assertInstanceOf('WP_Role', $role);
foreach ($capabilities as $cap => $grant) {
$this->assertTrue($role->has_cap($cap));
}
}
```
#### HVAC Custom Capabilities
```php
public function test_hvac_capabilities() {
$capabilities = [
'manage_hvac_events' => true,
'view_hvac_reports' => true,
'edit_hvac_settings' => true
];
$role = $this->role_manager->create_role($this->test_role_name, 'Test Trainer', $capabilities);
$this->assertInstanceOf('WP_Role', $role);
foreach ($capabilities as $cap => $grant) {
$this->assertTrue($role->has_cap($cap));
}
}
```
#### Role Management
```php
public function test_role_lifecycle() {
// Create role
$role = $this->role_manager->create_role($this->test_role_name, 'Test Trainer');
$this->assertInstanceOf('WP_Role', $role);
// Modify role
$this->role_manager->add_capability($this->test_role_name, 'custom_cap');
$this->assertTrue($role->has_cap('custom_cap'));
// Remove role
$this->role_manager->remove_role($this->test_role_name);
$this->assertNull(get_role($this->test_role_name));
}
```
### 4. Documentation & Demonstration (45 mins)
#### Test Execution Script
```bash
#!/bin/bash
# run-role-tests.sh
# Run vendor PHPUnit
./vendor/bin/phpunit \
--bootstrap tests/bootstrap-staging.php \
--testsuite role-manager \
--verbose
```
## Troubleshooting Guide
### Role Creation Issues
#### 1. Role Already Exists
- **Symptom**: Test fails with message "Role 'hvac_test_trainer' already exists"
- **Cause**: Incomplete cleanup from previous test run
- **Solution**:
```php
public function tearDown() {
remove_role($this->test_role_name);
parent::tearDown();
}
```
#### 2. Missing Capabilities
- **Symptom**: Role created but capabilities not assigned
- **Cause**: Incorrect capability array format
- **Solution**:
```php
// Correct format
$capabilities = [
'capability_name' => true, // Grant capability
'another_cap' => false // Explicitly deny
];
// Incorrect format
$capabilities = ['capability_name', 'another_cap']; // Don't use this
```
#### 3. Role Assignment Failures
- **Symptom**: User can't access features despite role assignment
- **Cause**: Role not properly assigned or capabilities not refreshed
- **Solution**:
```php
// Proper role assignment
$user_id = wp_create_user('test_user', 'password', 'test@example.com');
$user = new WP_User($user_id);
$user->add_role($this->test_role_name);
// Force capability refresh
$user = new WP_User($user_id); // Reload user object
```
## Success Criteria
- All test cases pass successfully
- Test coverage includes core WordPress and HVAC capabilities
- Documentation is clear and accessible
- Troubleshooting guide addresses common issues