Opening a file with protractor

0
0

Every protractor example I can find on the internet seems to use browser.get with a web URI.

browser.get('http://localhost:8000');

I’d like to use Selenium to simple navigate to a file:// path so that I don’t need a local web server running in order to perform tests. All I need is a simple HTML page and some assets.

That doesn’t seem to work though.

browser.get('file:///Users/myusername/dev/mpproject/spec/support/index.html');

When I paste that URI into my browser window I get a HTML page. When I try to open it with protractor I get a timeout.

How can I run tests on this page with protractor? The ideal answer will work with a relative file path from the myproject root.

  • You must to post comments
0
0

I am posting the solution I’ve found in here which helped me run Protractor with a file protocol.

By default, Protractor use data:text/html,<html></html> as resetUrl, but location.replace from the data: to the file: protocol is not allowed (we’ll get “not allowed local resource” error), so we replace resetUrl with one with the file: protocol:

exports.config = {
// ...
baseUrl
: 'file:///absolute/path/to/your/project/index.html',
onPrepare
: function() {
// By default, Protractor use data:text/html,<html></html> as resetUrl, but
// location.replace from the data: to the file: protocol is not allowed
// (we'll get ‘not allowed local resource’ error), so we replace resetUrl with one
// with the file: protocol (this particular one will open system's root folder)
browser
.resetUrl = 'file://';
}
// ...
};

If you want to run a relative path to your project folder, then you could just use Node.js tools, because Protractor runs in a Node.js environment. For example, __dirname will return an absolute path to a directory where your Protractor config file is saved. As a result use:

exports.config = {
// ...
baseUrl
: 'file://' + __dirname + '/spec/support/index.html'
// ...
};

Also, if you application does XHR requests to some endpoints, which are not allowed from file:, you may have to run your test browser with custom flags. In my case it was Chrome:

exports.config = {
// ...
capabilities
: {
browserName
: 'chrome',
chromeOptions
: {
// --allow-file-access-from-files - allow XHR from file://
args
: ['allow-file-access-from-files']
}
}
// ...
}
  • You must to post comments
Showing 1 result
Your Answer
Post as a guest by filling out the fields below or if you already have an account.
Name*
E-mail*
Website