| 
									
										
										
										
											2015-05-29 14:33:54 -07:00
										 |  |  | import * as testUtil from 'angular2/src/test_lib/e2e_util'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-11 14:54:59 -08:00
										 |  |  | var fs = require('fs'); | 
					
						
							|  |  |  | var sourceMap = require('source-map'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-29 14:33:54 -07:00
										 |  |  | describe('sourcemaps', function() { | 
					
						
							| 
									
										
										
										
											2015-02-11 14:54:59 -08:00
										 |  |  |   var URL = 'examples/src/sourcemap/index.html'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should map sources', function() { | 
					
						
							|  |  |  |     browser.get(URL); | 
					
						
							| 
									
										
										
										
											2015-04-30 11:25:50 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     $('error-app .errorButton').click(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-11 14:54:59 -08:00
										 |  |  |     // TODO(tbosch): Bug in ChromeDriver: Need to execute at least one command
 | 
					
						
							|  |  |  |     // so that the browser logs can be read out!
 | 
					
						
							|  |  |  |     browser.executeScript('1+1'); | 
					
						
							|  |  |  |     browser.manage().logs().get('browser').then(function(logs) { | 
					
						
							|  |  |  |       var errorLine = null; | 
					
						
							|  |  |  |       var errorColumn = null; | 
					
						
							|  |  |  |       logs.forEach(function(log) { | 
					
						
							| 
									
										
										
										
											2015-04-30 11:25:50 -07:00
										 |  |  |         var match = /\.createError\s+\(.+:(\d+):(\d+)/m.exec(log.message); | 
					
						
							| 
									
										
										
										
											2015-02-11 14:54:59 -08:00
										 |  |  |         if (match) { | 
					
						
							|  |  |  |           errorLine = parseInt(match[1]); | 
					
						
							|  |  |  |           errorColumn = parseInt(match[2]); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(errorLine).not.toBeNull(); | 
					
						
							|  |  |  |       expect(errorColumn).not.toBeNull(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-24 11:01:26 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-29 14:33:54 -07:00
										 |  |  |       var sourceMapData = fs.readFileSync('dist/js/prod/es5/examples/src/sourcemap/index.js.map'); | 
					
						
							| 
									
										
										
										
											2015-02-11 14:54:59 -08:00
										 |  |  |       var decoder = new sourceMap.SourceMapConsumer(JSON.parse(sourceMapData)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-29 14:33:54 -07:00
										 |  |  |       var originalPosition = decoder.originalPositionFor({line: errorLine, column: errorColumn}); | 
					
						
							| 
									
										
										
										
											2015-02-11 14:54:59 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-29 14:33:54 -07:00
										 |  |  |       var sourceCodeLines = | 
					
						
							|  |  |  |           fs.readFileSync('modules/examples/src/sourcemap/index.ts', {encoding: 'UTF-8'}) | 
					
						
							|  |  |  |               .split('\n'); | 
					
						
							| 
									
										
										
										
											2015-09-02 20:58:02 -07:00
										 |  |  |       expect(sourceCodeLines[originalPosition.line - 1]) | 
					
						
							| 
									
										
										
										
											2015-02-11 14:54:59 -08:00
										 |  |  |           .toMatch(/throw new BaseException\(\'Sourcemap test\'\)/); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }); |