Case I try to test: On Angular app page press button, that redirects you to some other site (not an Angular app).
it('should go to 3d party service when i click "auth" button' , function() {
browser.driver.sleep(3000);
element(by.id('files-services-icon')).click();
element(by.id('box-vendor-menu-item')).click();
browser.driver.sleep(2000);
expect( browser.driver.getLocationAbsUrl()).toContain('https://app.box.com/api/oauth2/authorize');
});
but I get:
UnknownError: unknown error: angular is not defined
How that can be achived? Thanks!
Protractor works well on non-AngularJS pages as well. The first step is to set browser. ignoreSynchronization = true; inside the beforeEach() block in the spec file, to signal Protractor not to wait for Angular components to load.
If you want to just check the current URL, then use browser. getCurrentUrl() : expect(browser. getCurrentUrl()).
Protractor is a test framework for web applications. Even though its primary use is for performing end-to-end testing in Angular and AngularJS applications, you can also use it for regular, non-Angular websites.
Now protractor supports both angular and Non-Angular applications. The protractor is wrapper written on top of Webdriver. js, all the features which are supported in Selenium Webdriver are supported by it, in addition to angular specific features. WebDriverJs is the Official javascript implementation of selenium.
You need to do 2 things
browser.ignoreSynchronization = true;
before trying to read the URL of the 3rd party page, so the browser doesn't wait for (and so require) Angular promises to resolve in the page (and set it to false
afterwards);browser.getCurrentUrl()
as opposed to browser.getLocationAbsUrl()
, as the former just uses the plain webdriver method of reading the URL, rather than accesing it via Angular.The following should work:
it('should go to 3d party service when i click "auth" button' , function() {
element(by.id('files-services-icon')).click();
element(by.id('box-vendor-menu-item')).click();
browser.ignoreSynchronization = true;
expect(browser.getCurrentUrl()).toContain('https://app.box.com/api/oauth2/authorize');
browser.ignoreSynchronization = false;
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With