78 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								'use strict'; // necessary for es6 output in node
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import { browser, element, by } from 'protractor';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('TypeScript to Javascript tests', function () {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  beforeAll(function () {
							 | 
						||
| 
								 | 
							
								    browser.get('');
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('should display the basic component example', function () {
							 | 
						||
| 
								 | 
							
								    testTag('hero-view', 'Hero Detail: 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 () {
							 | 
						||
| 
								 | 
							
								    let app = element(by.css('hero-di-inject-additional'));
							 | 
						||
| 
								 | 
							
								    let h1 = app.element(by.css('h1'));
							 | 
						||
| 
								 | 
							
								    let okMsg = app.element(by.css('p'));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    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 () {
							 | 
						||
| 
								 | 
							
								    let app = element(by.css('hero-io'));
							 | 
						||
| 
								 | 
							
								    let confirmComponent = app.element(by.css('app-confirm'));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    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() {
							 | 
						||
| 
								 | 
							
								    let app = element(by.css('hero-host'));
							 | 
						||
| 
								 | 
							
								    let h1 = app.element(by.css('h1'));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    expect(app.getAttribute('class')).toBe('heading');
							 | 
						||
| 
								 | 
							
								    expect(app.getAttribute('title')).toContain('Tooltip');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    h1.click();
							 | 
						||
| 
								 | 
							
								    expect(h1.getAttribute('class')).toBe('active');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    h1.click();
							 | 
						||
| 
								 | 
							
								    browser.actions().doubleClick(h1.getWebElement()).perform();
							 | 
						||
| 
								 | 
							
								    expect(h1.getAttribute('class')).toBe('active');
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('should support content and view queries', function() {
							 | 
						||
| 
								 | 
							
								    let app = element(by.css('hero-queries'));
							 | 
						||
| 
								 | 
							
								    let windstorm = app.element(by.css('view-child:first-child'));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    app.element(by.css('button')).click();
							 | 
						||
| 
								 | 
							
								    expect(windstorm.element(by.css('h2')).getAttribute('class')).toBe('active');
							 | 
						||
| 
								 | 
							
								    expect(windstorm.element(by.css('content-child')).getText()).toBe('Active');
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function testTag(selector: string, expectedText: string) {
							 | 
						||
| 
								 | 
							
								    let component = element(by.css(selector));
							 | 
						||
| 
								 | 
							
								    expect(component.getText()).toBe(expectedText);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								});
							 |