mirror of https://github.com/webpack/webpack.git
103 lines
3.2 KiB
Markdown
103 lines
3.2 KiB
Markdown
|
# Webpack Test Suite Structure
|
|||
|
|
|||
|
This document explains the structure of the `test/` directory in the Webpack project using Jest. The directory is organized into multiple folders and files, each serving a specific purpose in testing various aspects of Webpack’s functionality.
|
|||
|
|
|||
|
## Folder and File Breakdown
|
|||
|
|
|||
|
### 1. `__snapshots__/`
|
|||
|
|
|||
|
- **Purpose**: Stores Jest snapshot files for comparing output consistency over time.
|
|||
|
- **Usage**: Used for testing UI components, serialized data, or expected module outputs.
|
|||
|
|
|||
|
### 2. `benchmarkCases/`
|
|||
|
|
|||
|
- **Purpose**: Contains test cases for benchmarking Webpack's performance.
|
|||
|
- **Usage**: Measures build times, memory usage, and optimization impact.
|
|||
|
|
|||
|
### 3. `cases/`
|
|||
|
|
|||
|
- **Purpose**: General test cases covering core functionalities.
|
|||
|
- **Usage**: Includes unit and integration tests for various modules and features.
|
|||
|
|
|||
|
### 4. `configCases/`
|
|||
|
|
|||
|
- **Purpose**: Tests related to Webpack configurations.
|
|||
|
- **Usage**: Ensures that Webpack’s configuration (e.g., loaders, plugins) functions correctly.
|
|||
|
|
|||
|
### 5. `fixtures/`
|
|||
|
|
|||
|
- **Purpose**: Stores sample/mock data used in tests.
|
|||
|
- **Usage**: Helps in creating consistent test cases with predefined inputs.
|
|||
|
|
|||
|
### 6. `helpers/`
|
|||
|
|
|||
|
- **Purpose**: Utility functions and scripts to assist in testing.
|
|||
|
- **Usage**: Provides reusable functions for mock data generation, cleanup, and assertions.
|
|||
|
|
|||
|
### 7. `hotCases/`
|
|||
|
|
|||
|
- **Purpose**: Focuses on Webpack’s Hot Module Replacement (HMR) functionality.
|
|||
|
- **Usage**: Ensures live reloading and hot updates work correctly.
|
|||
|
|
|||
|
### 8. `hotPlayground/`
|
|||
|
|
|||
|
- **Purpose**: An experimental space for testing HMR features.
|
|||
|
- **Usage**: Allows exploration of new HMR implementations.
|
|||
|
|
|||
|
### 9. `memoryLimitCases/json`
|
|||
|
|
|||
|
- **Purpose**: Contains test cases related to memory limits.
|
|||
|
- **Usage**: Ensures Webpack doesn’t exceed memory constraints.
|
|||
|
|
|||
|
### 10. `statsCases/`
|
|||
|
|
|||
|
- **Purpose**: Tests focused on Webpack’s statistical outputs.
|
|||
|
- **Usage**: Verifies correct bundle sizes, dependencies, and optimizations.
|
|||
|
|
|||
|
### 11. `typesCases/`
|
|||
|
|
|||
|
- **Purpose**: Type-checking tests, likely for TypeScript integration.
|
|||
|
- **Usage**: Ensures proper type definitions and compliance.
|
|||
|
|
|||
|
### 12. `watchCases/`
|
|||
|
|
|||
|
- **Purpose**: Tests for Webpack’s watch mode functionality.
|
|||
|
- **Usage**: Ensures file changes trigger correct rebuild behavior.
|
|||
|
|
|||
|
### 13. `*.unittest.js`
|
|||
|
|
|||
|
- **Purpose**: Contains unit tests for various functionalities.
|
|||
|
- **Usage**: Ensures individual modules and functions work as expected.
|
|||
|
|
|||
|
### 14. `BannerPlugin.test.js`
|
|||
|
|
|||
|
- **Purpose**: Tests Webpack’s `BannerPlugin` functionality.
|
|||
|
- **Usage**: Ensures that the plugin correctly adds banners to the bundled files.
|
|||
|
|
|||
|
## Testing Framework
|
|||
|
|
|||
|
- **Jest** is used for running tests.
|
|||
|
- Snapshots help maintain consistency in output.
|
|||
|
- Unit tests verify individual module functionality.
|
|||
|
- Integration tests ensure multiple components work together.
|
|||
|
|
|||
|
## How to Run Tests
|
|||
|
|
|||
|
To execute all tests, use the following command:
|
|||
|
|
|||
|
```sh
|
|||
|
yarn test
|
|||
|
```
|
|||
|
|
|||
|
For running specific tests:
|
|||
|
|
|||
|
```sh
|
|||
|
jest cases/userLogic.test.js
|
|||
|
```
|
|||
|
|
|||
|
## Contribution Guide
|
|||
|
|
|||
|
- Add new test cases in the appropriate folder.
|
|||
|
- Use Jest assertions and mocks for consistency.
|
|||
|
- Run `yarn test` before pushing changes to validate functionality.
|