56 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Integration tests for Angular
 | |
| 
 | |
| This directory contains end-to-end tests for Angular. Each directory is a self-contained application that exactly mimics how a user might expect Angular
 | |
| to work, so they allow high-fidelity reproductions of real-world issues.
 | |
| 
 | |
| For this to work, we first build the Angular distribution just like we would
 | |
| publish it to npm, then install the distribution into each app.
 | |
| 
 | |
| To test Angular CLI applications, we use the integration test `cli-hello-world`.
 | |
| When a significant change is released in the CLI, the application should be updated with `ng update`:
 | |
| 
 | |
| ```bash
 | |
| $ cd integration/cli-hello-world
 | |
| $ yarn install
 | |
| $ yarn ng update @angular/cli @angular-devkit/build-angular
 | |
| # yarn build
 | |
| # yarn test
 | |
| # typescript version
 | |
| ```
 | |
| 
 | |
| ## Render3 tests
 | |
| 
 | |
| The directory `cli-hello-world-ivy-compat` contains a test for render3 used with the angular cli.
 | |
| 
 | |
| The `cli-hello-world-ivy-minimal` contains a minimal ivy app that is meant to mimic the bazel 
 | |
| equivalent in `packages/core/test/bundling/hello_world`, and should be kept similar.
 | |
| 
 | |
| ## Writing an integration test
 | |
| 
 | |
| The API for each test is:
 | |
| 
 | |
| - Each sub-directory here is an integration test
 | |
| - Each test should have a `package.json` file
 | |
| - The test runner will run `yarn` and `yarn test` on the package
 | |
| 
 | |
| This means that the test should be started by test script, like
 | |
| ```
 | |
| "scripts": {"test": "runProgramA && assertResultIsGood"}
 | |
| ```
 | |
| 
 | |
| Note that the `package.json` file uses a special `file://../../dist` scheme
 | |
| to reference the Angular packages, so that the locally-built Angular
 | |
| is installed into the test app.
 | |
| 
 | |
| Also, beware of floating (non-locked) dependencies. If in doubt
 | |
| you can install the package directly from `file:../../node_modules`.
 | |
| 
 | |
| ## Running integration tests
 | |
| 
 | |
| ```
 | |
| $ ./integration/run_tests.sh
 | |
| ```
 | |
| 
 | |
| The test runner will first re-build any stale npm packages, then `cd` into each
 | |
| subdirectory to execute the test.
 |