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. |