Security News
Cloudflare Adds Security.txt Setup Wizard
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
protractor
Advanced tools
Protractor is an end-to-end test framework for Angular and AngularJS applications. It runs tests against your application running in a real browser, interacting with it as a user would.
End-to-End Testing
Protractor allows you to write end-to-end tests for your Angular applications. The code sample demonstrates navigating to an AngularJS website, selecting elements, and making assertions about their state.
const { browser, element, by } = require('protractor');
browser.get('http://www.angularjs.org');
const todoList = element.all(by.repeater('todo in todoList.todos'));
expect(todoList.count()).toEqual(2);
expect(todoList.get(1).getText()).toEqual('build an AngularJS app');
Automatic Waiting
Protractor automatically waits for Angular to finish rendering and for any outstanding $http calls to be completed before performing the next action. This reduces the need for explicit waits in your tests.
const { browser, element, by } = require('protractor');
browser.get('http://www.angularjs.org');
const addButton = element(by.css('[value="add"]'));
addButton.click();
const todoList = element.all(by.repeater('todo in todoList.todos'));
expect(todoList.count()).toEqual(3);
Integration with Jasmine
Protractor integrates seamlessly with the Jasmine testing framework, allowing you to write tests in a behavior-driven development (BDD) style. The code sample shows a Jasmine test suite that adds a new todo item and verifies its presence.
describe('angularjs homepage todo list', function() {
it('should add a todo', function() {
browser.get('http://www.angularjs.org');
element(by.model('todoList.todoText')).sendKeys('write a protractor test');
element(by.css('[value="add"]')).click();
const todoList = element.all(by.repeater('todo in todoList.todos'));
expect(todoList.count()).toEqual(3);
expect(todoList.get(2).getText()).toEqual('write a protractor test');
});
});
Cypress is a next-generation front-end testing tool built for the modern web. It offers a more developer-friendly experience with features like time travel, real-time reloads, and automatic waiting. Unlike Protractor, Cypress does not require WebDriver and runs directly in the browser.
WebdriverIO is a popular testing framework that allows you to run tests based on the WebDriver protocol and Appium. It supports both synchronous and asynchronous commands and can be used for both web and mobile applications. WebdriverIO is more versatile compared to Protractor, which is specifically designed for Angular applications.
TestCafe is a Node.js tool to automate end-to-end web testing. It works without WebDriver and is compatible with any modern web application. TestCafe provides a simple syntax and powerful features like parallel test execution and easy integration with CI/CD pipelines. Unlike Protractor, TestCafe is framework-agnostic and can be used with any web application.
Protractor is an end to end test framework for Angular applications built on top of webdriverJS.
Protractor can be run as a standalone binary runner, or included into your tests as a library. Use Protractor as a library if you would like to manage WebDriver and your test setup yourself.
Install protractor with.
npm install protractor
Start up a selenium server (See the appendix below for help with this). By default, the tests expect the selenium server to be running at http://localhost:4444/wd/hub
.
The example folder contains multiple versions of a simple test suite which runs against angularjs.org.
onJasmineNodeSpec.js
and onMocha.js
show how to use the Protractor library with jasmine-node and mocha. Run these with:
jasmine-node example/onJasmineNodeSpec.js
mocha example/onMocha.js
You can also run the example suite using the Protractor runner. The runner accepts a configuration file, which runs the tests at example/onProtractor.js
.
bin/protractor example/protractorConf.js
The Protractor runner is a binary which accepts a config file. The Protractor runner runs tests written in Jasmine, but other adapters may be added in the future.
Install protractor with
npm install protractor
Create a configuration file - an example is shown in node_modules/protractor/conf.js
.
cp node_modules/protractor/conf.js myConf.js
Edit the configuration file to point to your tests.
exports.config = {
jasmineNodeOpts: {
specFolders: ['myTest.js', 'myOtherTestFolder']
}
}
The configuration file must also specify a way of connection to webdriver. This can be
seleniumAddress
: The address of a running selenium standalone server.seleniumServerJar
: The location of the selenium standalone .jar file on your machine. Protractor will use this to start up the selenium server.sauceUser
and sauceKey
: The username and key for a SauceLabs account. Protractor will use this to run tests on SauceLabs.Run with
node_modules/.bin/protractor myConf.js
Or, if you installed protractor globally (using npm install -g protractor
)
protractor myConf.js
Use the Protractor library if you would like to manage webdriverJs yourself.
Install protractor with
npm install protractor
In your test, set up a webdriver instance, then wrap it with protractor.
var protractor = require('protractor');
var driver;
// Set up driver as a webdriver however you'd like.
var ptor = protractor.wrapDriver(driver);
Clone the github repository.
git clone https://github.com/juliemr/protractor.git
cd protractor
npm install
Start up a selenium server. By default, the tests expect the selenium server to be running at http://localhost:4444/wd/hub
.
Protractor's test suite runs against the included testapp. Start that up with
cd testapp
scripts/web-server.js
Then run the tests with
bin/protractor conf.js
WebdriverJS does not natively include the selenium server - you must start a standalone selenium server. All you need is the latest selenium-server-standalone.
To use with chrome browsers, download chromedriver. More information about chromedriver
A script is included to do the download for you - run with (add the --nocd option if you do not want to install ChromeDriver)
./node_modules/protractor/bin/install_selenium_standalone
Start the selenium standalone with
java -jar selenium/selenium-server-standalone-2.33.0.jar -Dwebdriver.chrome.driver=./selenium/chromedriver
FAQs
Webdriver E2E test wrapper for Angular.
The npm package protractor receives a total of 674,462 weekly downloads. As such, protractor popularity was classified as popular.
We found that protractor demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
Security News
The Socket Research team breaks down a malicious npm package targeting the legitimate DOMPurify library. It uses obfuscated code to hide that it is exfiltrating browser and crypto wallet data.
Security News
ENISA’s 2024 report highlights the EU’s top cybersecurity threats, including rising DDoS attacks, ransomware, supply chain vulnerabilities, and weaponized AI.