2017-02-09 09:06:19 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# Integration tests for Angular
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-16 07:09:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								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.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-04-24 20:30:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								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` :
							 
						 
					
						
							
								
									
										
										
										
											2018-01-16 07:09:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2018-10-31 17:25:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								$ cd integration/cli-hello-world
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$ yarn install
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$ yarn ng update @angular/cli  @angular -devkit/build-angular
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# yarn build
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# yarn test
  
						 
					
						
							
								
									
										
										
										
											2018-01-16 07:09:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# typescript version
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2017-02-09 09:06:19 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-25 16:43:29 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								## Render3 tests
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-30 14:02:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								The directory `cli-hello-world-ivy-compat`  contains a test for render3 used with the angular cli.
							 
						 
					
						
							
								
									
										
										
										
											2018-01-25 16:43:29 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-28 15:04:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								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.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-02-09 09:06:19 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								## 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
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2018-10-31 17:25:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"scripts": {"test": "runProgramA & &  assertResultIsGood"}
							 
						 
					
						
							
								
									
										
										
										
											2017-02-09 09:06:19 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								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.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-21 15:39:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Also, beware of floating (non-locked) dependencies. If in doubt
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								you can install the package directly from `file:../../node_modules` .
							 
						 
					
						
							
								
									
										
										
										
											2017-02-09 09:06:19 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## Running integration tests
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$ ./integration/run_tests.sh
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2018-03-15 15:36:11 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The test runner will first re-build any stale npm packages, then `cd`  into each
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								subdirectory to execute the test.