Add comprehensive testing framework for both single site and multisite WordPress environments
This commit is contained in:
125
.wiki/Testing-Framework.md
Normal file
125
.wiki/Testing-Framework.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# WordPress Plugin Testing Framework
|
||||
|
||||
This document outlines how to set up and run tests for our plugin in both single site and multisite WordPress environments.
|
||||
|
||||
## Overview
|
||||
|
||||
Our plugin is designed to work with both standard WordPress installations and WordPress Multisite. This testing framework allows you to verify functionality in both environments.
|
||||
|
||||
## Setting Up the Test Environment
|
||||
|
||||
We use `@wordpress/env` and Cypress for testing our plugin.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
* Node.js (v14 or higher)
|
||||
* npm or yarn
|
||||
* Docker and Docker Compose
|
||||
|
||||
### Installation
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone https://github.com/wpallstars/wp-plugin-starter-template-for-ai-coding.git
|
||||
cd wp-plugin-starter-template-for-ai-coding
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
## Testing in Single Site WordPress
|
||||
|
||||
1. Set up the single site environment:
|
||||
```bash
|
||||
npm run setup:single
|
||||
```
|
||||
|
||||
This will:
|
||||
- Start a WordPress environment using wp-env
|
||||
- Activate our plugin
|
||||
|
||||
2. Run Cypress tests for single site:
|
||||
```bash
|
||||
npm run test:single
|
||||
```
|
||||
|
||||
For headless testing:
|
||||
```bash
|
||||
npm run test:single:headless
|
||||
```
|
||||
|
||||
3. Access the site manually:
|
||||
- Site: http://localhost:8888
|
||||
- Admin login: admin / password
|
||||
|
||||
## Testing in WordPress Multisite
|
||||
|
||||
1. Set up the multisite environment:
|
||||
```bash
|
||||
npm run setup:multisite
|
||||
```
|
||||
|
||||
This will:
|
||||
- Start a WordPress environment using wp-env
|
||||
- Configure it as a multisite installation
|
||||
- Create a test subsite
|
||||
- Network activate our plugin
|
||||
|
||||
2. Run Cypress tests for multisite:
|
||||
```bash
|
||||
npm run test:multisite
|
||||
```
|
||||
|
||||
For headless testing:
|
||||
```bash
|
||||
npm run test:multisite:headless
|
||||
```
|
||||
|
||||
3. Access the sites manually:
|
||||
- Main site: http://localhost:8888
|
||||
- Test subsite: http://localhost:8888/testsite
|
||||
- Admin login: admin / password
|
||||
|
||||
## Continuous Integration
|
||||
|
||||
We use GitHub Actions to automatically run tests on pull requests. The workflow is defined in `.github/workflows/wordpress-tests.yml` and runs tests in both single site and multisite environments.
|
||||
|
||||
## Writing Tests
|
||||
|
||||
### Single Site Tests
|
||||
|
||||
Add new single site tests to `cypress/e2e/single-site.cy.js`.
|
||||
|
||||
### Multisite Tests
|
||||
|
||||
Add new multisite tests to `cypress/e2e/multisite.cy.js`.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
1. **Database connection errors**: Make sure Docker is running and ports 8888 and 8889 are available.
|
||||
|
||||
2. **Multisite conversion fails**: Check the wp-env logs for details:
|
||||
```bash
|
||||
wp-env logs
|
||||
```
|
||||
|
||||
3. **Plugin not activated**: Run the following command:
|
||||
```bash
|
||||
# For single site
|
||||
wp-env run cli wp plugin activate wp-plugin-starter-template-for-ai-coding
|
||||
|
||||
# For multisite
|
||||
wp-env run cli wp plugin activate wp-plugin-starter-template-for-ai-coding --network
|
||||
```
|
||||
|
||||
### Getting Help
|
||||
|
||||
If you encounter any issues, please open an issue on our GitHub repository with:
|
||||
- A description of the problem
|
||||
- Steps to reproduce
|
||||
- Any error messages
|
||||
- Your environment details (OS, Node.js version, etc.)
|
||||
Reference in New Issue
Block a user