| 
									
										
										
										
											2016-10-06 23:25:52 +01:00
										 |  |  | 'use strict'; // necessary for es6 output in node 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import { browser, element, by } from 'protractor'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-16 18:01:33 +02:00
										 |  |  | describe('TypeScript to Javascript tests', function () { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   beforeAll(function () { | 
					
						
							|  |  |  |     browser.get(''); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should display the basic component example', function () { | 
					
						
							|  |  |  |     testTag('hero-view', 'Hero: Windstorm'); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should display the component example with lifecycle methods', function () { | 
					
						
							|  |  |  |     testTag('hero-lifecycle', 'Hero: Windstorm'); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should display component with DI example', function () { | 
					
						
							|  |  |  |     testTag('hero-di', 'Hero: Windstorm'); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should display component with DI using @Inject example', function () { | 
					
						
							|  |  |  |     testTag('hero-di-inject', 'Hero: Windstorm'); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should support optional, attribute, and query injections', function () { | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |     let app = element(by.css('hero-di-inject-additional')); | 
					
						
							|  |  |  |     let h1 = app.element(by.css('h1')); | 
					
						
							| 
									
										
										
										
											2016-09-01 02:08:57 +01:00
										 |  |  |     let okMsg = app.element(by.css('p')); | 
					
						
							| 
									
										
										
										
											2016-03-16 18:01:33 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     expect(h1.getText()).toBe('Tour of Heroes'); | 
					
						
							|  |  |  |     app.element(by.buttonText('OK')).click(); | 
					
						
							|  |  |  |     expect(okMsg.getText()).toBe('OK!'); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should support component with inputs and outputs', function () { | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |     let app = element(by.css('hero-io')); | 
					
						
							|  |  |  |     let confirmComponent = app.element(by.css('my-confirm')); | 
					
						
							| 
									
										
										
										
											2016-03-16 18:01:33 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     confirmComponent.element(by.buttonText('OK')).click(); | 
					
						
							|  |  |  |     expect(app.element(by.cssContainingText('span', 'OK clicked')).isPresent()).toBe(true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     confirmComponent.element(by.buttonText('Cancel')).click(); | 
					
						
							|  |  |  |     expect(app.element(by.cssContainingText('span', 'Cancel clicked')).isPresent()).toBe(true); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should support host bindings and host listeners', function() { | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |     let app = element(by.css('heroes-bindings')); | 
					
						
							|  |  |  |     let h1 = app.element(by.css('h1')); | 
					
						
							| 
									
										
										
										
											2016-03-16 18:01:33 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     expect(app.getAttribute('class')).toBe('heading'); | 
					
						
							|  |  |  |     expect(app.getAttribute('title')).toBe('Tooltip content'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     h1.click(); | 
					
						
							|  |  |  |     expect(h1.getAttribute('class')).toBe('active'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     h1.click(); | 
					
						
							| 
									
										
										
										
											2016-10-06 23:25:52 +01:00
										 |  |  |     browser.actions().doubleClick(h1.getWebElement()).perform(); | 
					
						
							| 
									
										
										
										
											2016-03-16 18:01:33 +02:00
										 |  |  |     expect(h1.getAttribute('class')).toBe('active'); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should support content and view queries', function() { | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |     let app = element(by.css('heroes-queries')); | 
					
						
							| 
									
										
										
										
											2016-06-13 00:41:33 +02:00
										 |  |  |     let windstorm = app.element(by.css('a-hero:first-child')); | 
					
						
							| 
									
										
										
										
											2016-03-16 18:01:33 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     app.element(by.buttonText('Activate')).click(); | 
					
						
							|  |  |  |     expect(windstorm.element(by.css('h2')).getAttribute('class')).toBe('active'); | 
					
						
							|  |  |  |     expect(windstorm.element(by.css('active-label')).getText()).toBe('Active'); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |   function testTag(selector: string, expectedText: string) { | 
					
						
							|  |  |  |     let component = element(by.css(selector)); | 
					
						
							| 
									
										
										
										
											2016-03-16 18:01:33 +02:00
										 |  |  |     expect(component.getText()).toBe(expectedText); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }); |