GithubHelp home page GithubHelp logo

rochejul / gulp-angular-protractor Goto Github PK

View Code? Open in Web Editor NEW
25.0 10.0 25.0 226 KB

Gulp plugin to run protractor tests

License: MIT License

JavaScript 100.00%
javascript gulp-plugins protractor-tests protractor angular testing

gulp-angular-protractor's Introduction

gulp-angular-protractor

Build StatusDependency Status devDependency Status

Known Vulnerabilities

NPM NPM

Gulp plugin to run protractor tests with automatic launch and stop of the WebDriver server

Install

$ npm install --save-dev gulp-angular-protractor

Side dependencies

You should declare what expected version of protractor and webdriver manager you want to use:

{
  "name": "example-gulp-protractor",
  "version": "0.0.1",
  "description": "",
  "scripts": {
    "gulp": "node node_modules/gulp/bin/gulp.js",
    "test": "npm run gulp protractor"
  },
  "devDependencies": {
    "gulp": "latest",
    "gulp-angular-protractor": "latest",
    "protractor": "4.0.11",
    "webdriver-manager": "10.2.8"
  }
}

Be carefull: some protractor and webdriver dependencies version required:

  • Some specific node version
  • Some specific npm version
  • Some specific browser version
  • ...

Usage

var gulp = require('gulp');
var angularProtractor = require('gulp-angular-protractor');

gulp.src(['./src/tests/*.js'])
	.pipe(angularProtractor({
		'configFile': 'test/protractor.config.js',
		'args': ['--baseUrl', 'http://127.0.0.1:8000'],
		'autoStartStopServer': true,
		'debug': true
	}))
	.on('error', function(e) { throw e })

Full example

/*jshint node: true, camelcase: false*/
/*global require: true*/

'use strict';

var gulp = require('gulp'),
    gulpProtractorAngular = require('gulp-angular-protractor');

// Setting up the test task
gulp.task('protractor', function(callback) {
    gulp
        .src(['example_spec.js'])
        .pipe(gulpProtractorAngular({
            'configFile': 'protractor.conf.js',
            'debug': false,
            'autoStartStopServer': true
        }))
        .on('error', function(e) {
            console.log(e);
        })
        .on('end', callback);
});

API

angularProtractor(options)

options

options.autoStartStopServer

Type: Boolean Default: true

If true, the plugin will update the WebDriver, launch the WebDriver server before launching tests and stop it at the end automatically

options.configFile

Type: String Default: null

The path to your protractor config

options.args

Type: Array Default: []

Arguments get passed directly to the protractor call Read the docs for more information

options.debug

Type: Boolean Default: false

Enables Protractor's debug mode, which can be used to pause tests during execution and to view stack traces.

options.verbose

Type: Boolean Default: true

options.protractorModulePath

Type: String Default: undefined

If you want to use another protractor version instead the default one

options.webDriverUpdate

Type: Object Default: undefined

options.webDriverUpdate.skip

Type: Boolean Default: false

options.webDriverUpdate.browsers

Type: Array Default: ['chrome']

List of browsers to update the webdriver

options.webDriverUpdate.args

Type: Array Default: []

Additional arguments to pass for the update of the webdriver

options.webDriverStart

Type: Object Default: undefined

options.webDriverStart.args

Type: Array Default: []

Additional arguments to pass for the start of the webdriver

License

MIT ยฉ Julien Roche

gulp-angular-protractor's People

Contributors

cosenmarco avatar flehoux avatar rochejul avatar zbjornson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gulp-angular-protractor's Issues

Error: spawn webdriver-manager ENOENT after updating to 0.0.7

After updating from version 0.0.6 to version 0.0.7 i cant run my tests again.

output after updating to version 0.0.7:

[16:51:34] Finished 'build' after 1.37 s
[16:51:34] Starting 'test:e2e:run-protractor-server'...
[16:51:34] Webserver started at http://localhost:8888
[16:51:34] gulp-angular-protractor - The plugin is retrieved and will start soon
[16:51:34] gulp-angular-protractor - We will try to start and stop automatically the WebDriver server
[16:51:34] gulp-angular-protractor - The selenium address is: undefined
[16:51:34] gulp-angular-protractor - The selenium address used is: http://localhost:4444/wd/hub
[16:51:34] gulp-angular-protractor - The selenium shutdown address used is: undefined
[16:51:34] gulp-angular-protractor - We have the config file to the following path: /Users/ramram/develop/angular/angular-full-seed/Users/ramram/develop/angular/angular-full-seed/e2e-tests/protractor.conf.js
[16:51:34] gulp-angular-protractor - Webdriver standalone will be updated
Updating selenium standalone
downloading https://selenium-release.storage.googleapis.com/2.47/selenium-server-standalone-2.47.1.jar...
Updating chromedriver
downloading https://chromedriver.storage.googleapis.com/2.19/chromedriver_mac32.zip...
selenium-server-standalone-2.47.1.jar downloaded to /Users/ramram/develop/angular/angular-full-seed/node_modules/gulp-angular-protractor/node_modules/gulp-protractor/node_modules/protractor/selenium/selenium-server-standalone-2.47.1.jar
chromedriver_2.19.zip downloaded to /Users/ramram/develop/angular/angular-full-seed/node_modules/gulp-angular-protractor/node_modules/gulp-protractor/node_modules/protractor/selenium/chromedriver_2.19.zip
[16:52:42] gulp-angular-protractor - Webdriver standalone is updated
[16:52:42] gulp-angular-protractor - Webdriver standalone server will be started
events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: spawn webdriver-manager ENOENT
    at exports._errnoException (util.js:874:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
    at onErrorNT (internal/child_process.js:344:16)
    at doNTCallback2 (node.js:441:9)
    at process._tickCallback (node.js:355:17)

after going back to version 0.0.6 everything is comming normal:

[16:41:52] Finished 'build' after 1.31 s
[16:41:52] Starting 'test:e2e:run-protractor-server'...
[16:41:52] Webserver started at http://localhost:8888
[16:41:52] gulp-angular-protractor - The plugin is retrieved and will start soon
[16:41:52] gulp-angular-protractor - We will try to start and stop automatically the WebDriver server
[16:41:52] gulp-angular-protractor - The selenium address is: undefined
[16:41:52] gulp-angular-protractor - The selenium address used is: http://localhost:4444/wd/hub
[16:41:52] gulp-angular-protractor - The selenium shutdown address used is: undefined
[16:41:52] gulp-angular-protractor - Webdriver standalone will be updated
Updating selenium standalone
downloading https://selenium-release.storage.googleapis.com/2.48/selenium-server-standalone-2.48.2.jar...
Updating chromedriver
downloading https://chromedriver.storage.googleapis.com/2.20/chromedriver_mac32.zip...
chromedriver_2.20.zip downloaded to /Users/ramram/develop/angular/angular-full-seed/node_modules/protractor/selenium/chromedriver_2.20.zip
selenium-server-standalone-2.48.2.jar downloaded to /Users/ramram/develop/angular/angular-full-seed/node_modules/protractor/selenium/selenium-server-standalone-2.48.2.jar
[16:49:00] gulp-angular-protractor - Webdriver standalone is updated
[16:49:00] gulp-angular-protractor - Webdriver standalone server will be started
[16:49:00] seleniumProcess.pid: 5855

[16:49:01] 16:49:01.068 INFO - Launching a standalone Selenium Server

[16:49:01] Setting system property webdriver.chrome.driver to /Users/ramram/develop/angular/angular-full-seed/node_modules/protractor/selenium/chromedriver

[16:49:01] 16:49:01.115 INFO - Java: Oracle Corporation 25.45-b02

[16:49:01] 16:49:01.115 INFO - OS: Mac OS X 10.11.3 x86_64

[16:49:01] 16:49:01.129 INFO - v2.48.0, with Core v2.48.0. Built from revision 41bccdd

[16:49:01] 16:49:01.188 INFO - Driver provider org.openqa.selenium.ie.InternetExplorerDriver registration is skipped:
registration capabilities Capabilities [{ensureCleanSession=true, browserName=internet explorer, version=, platform=WINDOWS}] does not match the current platform MAC

[16:49:01] 16:49:01.189 INFO - Driver provider org.openqa.selenium.edge.EdgeDriver registration is skipped:
registration capabilities Capabilities [{browserName=MicrosoftEdge, version=, platform=WINDOWS}] does not match the current platform MAC

[16:49:01] 16:49:01.189 INFO - Driver class not found: com.opera.core.systems.OperaDriver

[16:49:01] 16:49:01.189 INFO - Driver provider com.opera.core.systems.OperaDriver is not registered

[16:49:01] 16:49:01.285 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub

[16:49:01] 16:49:01.285 INFO - Selenium Server is up and running

[16:49:01] gulp-angular-protractor - Webdriver standalone server is started
[16:49:01] gulp-angular-protractor - We will run the Protractor engine
Starting selenium standalone server...
[launcher] Running 1 instances of WebDriver
Selenium standalone server started at http://10.0.0.11:63020/wd/hub
Started
.......


7 specs, 0 failures
Finished in 15.815 seconds
Shutting down selenium standalone server.
[launcher] 0 instance(s) of WebDriver still running
[launcher] chrome #1 passed
[16:49:20] 16:49:20.356 INFO - Command request: shutDownSeleniumServer[, ] on session null

[16:49:20] 16:49:20.357 INFO - Shutdown command received

[16:49:20] gulp-angular-protractor - Webdriver standalone server is stopped
[16:49:20] Finished 'test:e2e:run-protractor-server' after 7.47 min
[16:49:20] Finished 'test:e2e' after 7.48 min
[16:49:20] Finished 'test' after 7.55 min
[16:49:20] 16:49:20.360 INFO - Got result: OK on session null
16:49:20.360 INFO - initiating shutdown

[16:49:20] 16:49:20.866 INFO - Shutting down...

[16:49:21] Selenium Standalone has exited with code 0

[16:49:21] gulp-angular-protractor - Webdriver standalone server will be closed

anything i can do?

Thanks ๐Ÿ‘

Mobile Support Appium Start Stop

Hello Julien,

Is it possible to support appium start stop using gulp-angular-protractor?
Please check the link where webdriver-manager supports mobile.

Please suggest how this can be implemented.
Thanks in advance.

When a test fails, the stand alone web driver process is not shut down

In our project we want to run all e2e tests, create a report and show it to the developer with all the successful and failed tests. We find this gulp task super useful but we are having trouble with one thing. When any test fails, the web driver process does not get terminated and the gulp task never ends. To mitigate this we're using this hack:
Sample gulpfile.js

var gulp = require('gulp');
var angularProtractor = require('gulp-angular-protractor');

gulp.task('run-e2e', function(callback){

    /* Hack to get gulp-angular-protractor to terminate the web driver process even if a test fails */
    var webDriver = require('../node_modules/gulp-angular-protractor/gulp-angular-protractor/web-driver.js');

    gulp.src(['./e2e/**/*.feature'])
        .pipe(angularProtractor({
            'configFile': 'protractor.config.js',
            'args': ['--baseUrl', baseUrl],
            'autoStartStopServer': true
        }))
        .on('error', function (e) {
            /* Use same url as in config */
            webDriver.webDriverStandaloneStop('http://localhost:4444/wd/hub', callback);
        })
        .on('end', function () {
            callback();
        });
});

gulp.task('create-e2e-report', ['run-e2e'], function() {/* omitted */});
gulp.task('open-e2e-report', ['create-e2e-report'], function() {/* omitted */});

Looking at the source (gulp-stream.js line 63) it looks like this is by design so there might be a use case that I don't understand. Would it be possible to always stop the web driver process, even if exit code > 0, or will that cause other issues?

Thanks for the great work!

Regards

Jesper

ERROR: spawn webdriver-manager ENOENT when webdriver-manager is not in PATH

I'm using your plugin to run some e2e tests and got the following error when running the gulp task:

[15:29:02] gulp-angular-protractor - Webdriver standalone will be updated
selenium standalone is up to date.
chromedriver is up to date.
[15:29:02] gulp-angular-protractor - Webdriver standalone is updated
[15:29:02] gulp-angular-protractor - Webdriver standalone server will be started
events.js:154
throw er; // Unhandled 'error' event
^

Error: spawn webdriver-manager ENOENT
at exports._errnoException (util.js:893:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:182:32)
at onErrorNT (internal/child_process.js:348:16)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)

I did a few tests and trying to install protractor globally leads to gulp-angular-protractor trying to use the globally installed webdriver-manager; adding the node_modules/gulp-angular-protractor/node_modules/gulp-protractor/node_modules/protractor/bin directory manually to the PATH seemed to "solve" the issue. I'm not sure that I should need to do that manually in order to run my tests, though.

Since I've just started developing with JS, is there any step I might have missed during installation/configuration, or when running my tests, that may be causing this problem?

My gulp tasks (running my tests with gulp e2e):

var gulp = require('gulp'),
    connect = require('gulp-connect'),
    protractor = require('gulp-angular-protractor');

gulp.task('connect', function(cb){
    connect.server({
        port: 8000, 
        root: '../../main/resources/'
    });
    cb();
});

gulp.task('e2e', ['connect'], function(callback){
  var configFile = "e2e/protractor.conf.js";

  gulp
    .src('e2e/*-spec.js')
    .pipe(protractor({
      configFile: configFile,
      debug: false,
      args: ['--baseUrl', 'http://localhost:8000'],
      autoStartStopServer: true
    }))
    .on('error', function(e) {
        console.log(e);
        connect.serverClose();
    })
    .on('end', function(){
      callback();
      connect.serverClose();
    });
});

System Info:

Node version: 5.11.0
NPM version: 3.8.6
gulp version: 3.9.1
gulp-angular-protractor version: 0.1.1
OS: Ubuntu 16.04 x86_64

Arguments to webdriver are not being pass to the selenium server

Hi there, it seems that the args pass to the webdriver are not being used later on.

For example I tried to use --seleniumPort 4445 and it seems that it works at the beginning, but at the end the selenium server uses 4444

this works:

./node_modules/webdriver-manager/bin/webdriver-manager start --seleniumPort 4445

Configuration:

webDriverStart: {
    args: ['--seleniumPort 4445']
},

Here are the logs:

[18:36:52] gulp-angular-protractor - The plugin is retrieved and will start soon
[18:36:52] gulp-angular-protractor - We will try to start and stop automatically the WebDriver server
[18:36:52] gulp-angular-protractor - The selenium address is: http://localhost:4445/wd/hub
[18:36:52] gulp-angular-protractor - The selenium address used is: http://localhost:4445/wd/hub
[18:36:52] gulp-angular-protractor - The selenium shutdown address used is: http://localhost:4445/selenium-server/driver/?cmd=shutDownSeleniumServer
[18:36:52] gulp-angular-protractor - We have the config file to the following path: protractor.conf.js
[18:36:52] gulp-angular-protractor - Webdriver standalone will be updated
webdriver-manager: using global installed version 10.2.8
[18:36:53] I/file_manager - creating folder node_modules\webdriver-manager\selenium
[18:36:53] I/downloader - selenium standalone: downloading version 2.53.1
[18:36:53] I/downloader - curl -o node_modules\webdriver-manager\selenium/selenium-server-standalone-2.53.1.jar https://selenium-release.storage.googleapis.com/2.53/selenium-server-standalone-2.53.1.jar
[18:36:53] I/downloader - chromedriver: downloading version 2.25
[18:36:53] I/downloader - curl -o node_modules\webdriver-manager\selenium/chromedriver_2.25win32.zip https://chromedriver.storage.googleapis.com/2.25/chromedriver_win32.zip
[18:36:53] I/downloader - geckodriver: downloading version v0.11.1
[18:36:53] I/downloader - curl -o node_modules\webdriver-manager\selenium/geckodriver-v0.11.1-win64.zip https://github.com/mozilla/geckodriver/releases/download/v0.11.1/geckodriver-v0.11.1-win64.zip
[18:36:58] I/update - chromedriver: unzipping node_modules\webdriver-manager\selenium\chromedriver_2.25win32.zip
[18:37:03] I/update - geckodriver: unzipping node_modules\webdriver-manager\selenium\geckodriver-v0.11.1-win64.zip
[18:37:12] gulp-angular-protractor - Webdriver standalone is updated
[18:37:12] gulp-angular-protractor - Webdriver standalone server will be started
[18:37:13] webdriver-manager: using global installed version 10.2.8

[18:37:13] [18:37:13] I/start - java -Dwebdriver.chrome.driver=node_modules\webdriver-manager\selenium\chromedriver_2.25.exe -Dwebdriver.gecko.driver=node_modules\webdriver-manager\selenium\geckodriver-v0.11.1.exe -jar node_modules\webdriver-manager\selenium\selenium-server-standalone-2.53.1.jar -port 4444

[18:37:13] [18:37:13] I/start - seleniumProcess.pid: 17964

[18:37:14] 18:37:14.433 INFO - Launching a standalone Selenium Server

[18:37:14] 18:37:14.856 INFO - Java: Oracle Corporation 25.121-b13

[18:37:14] 18:37:14.856 INFO - OS: Windows 10 10.0 x86

[18:37:14] 18:37:14.864 INFO - v2.53.1, with Core v2.53.1. Built from revision a36b8b1

[18:37:14] 18:37:14.937 INFO - Driver class not found: com.opera.core.systems.OperaDriver

[18:37:14] 18:37:14.938 INFO - Driver provider com.opera.core.systems.OperaDriver is not registered

[18:37:14] 18:37:14.944 INFO - Driver provider org.openqa.selenium.safari.SafariDriver registration is skipped:
registration capabilities Capabilities [{browserName=safari, version=, platform=MAC}] does not match the current platform WIN10

[18:37:14] 18:37:14.945 INFO - Driver class not found: org.openqa.selenium.htmlunit.HtmlUnitDriver
18:37:14.945 INFO - Driver provider org.openqa.selenium.htmlunit.HtmlUnitDriver is not registered

[18:37:15] 18:37:15.606 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub

[18:37:15] 18:37:15.606 INFO - Selenium Server is up and running

thanks!

How to start webdriver manager with --ie32

I want to start webdriver-manager as 'webdriver-manager start --ie32' for running scripts in IE11 browser using 32 bit IEDriverserver.exe.

Below is my task. Please let me know how can i implement above mechanism

gulp.task('run-ie',function(callback){
gulp.src(['e2e/specs/LoginTestCasesSpec.js'])
.pipe(gulpProtractorAngular({
'configFile': './protractor.conf.js',
'args':['--browser', 'internet explorer'],
'autoStartStopServer': true
}))
.on('error', function(e) {
console.log(e);
})
.on('end', callback);
});

Confusion about global Protractor and node_modules Protractor

The Protractor plugin indicates you should install protractor globally, but it appears the gulp-angular-protractor plugin is using its own node_module of protractor.

So is it possible to access webdriver-manager CLI from that node_module? I want to keep the webdriver open when writing tests to reduce lag time from autoStartStop.

Command line will read from the global CLI, not the actual gulp-angular-protractor CLI.

teapot error on vinyl@406

I constantly see teapot error on vinyl package which as pointed out by network administrator has caused by shrinkwrapped packages. any recommendation on this or any plan to remove npm-shrinkwrap in near future? appreciate your help.

Getting error when running 'gulp protractor' task

I'm getting this error in Terminal:

gulp-angular-protractor/node_modules/gulp-protractor/node_modules/protractor/node_modules/q/q.js:126
                    throw e;
                          ^
Error: Plugin configuration did not contain a valid path or inline definition.

Here's my test.js file:

var gulp = require('gulp');
var gulpProtractorAngular = require('gulp-angular-protractor');

gulp.task('protractor', function(callback) {
    gulp
        .src(['test-e2e/scenarios/*.js'])
        .pipe(gulpProtractorAngular({
            'configFile': 'test-e2e/protractor.conf.js',
            'debug': false,
            'autoStartStopServer': true
        }))
        .on('error', function(e) {
            console.log(e);
        })
        .on('end', callback);
});

This was running last week.

Versions:
"gulp-angular-protractor": "^0.0.6"
"gulp-protractor": "^1.0.0"

Any ideas?

Question - run without gulp src

First thanks for making it a lot easier to stop and start webdriver.

I would like to use suites instead of piping src file and take full advantages of the protractor config file where I define the suites to run.

`gulp.task('e2e:local', runProtractor);

function runProtractor(done) {
var params = process.argv;
var args = params.length > 3 ? [params[3], params[4]] : [];

  gutil.log('arguments: ' + args);

gulp.src(paths.e2eSuites.itProject)
  .pipe(protractor({
      configFile: 'protractor.local.conf.js',
      args: args,
      'autoStartStopServer': true,
      'debug': false
  }))
  .on('error', function (err) {
      gutil.log(gutil.colors.red('error: ' + err));
      // Make sure failed tests cause gulp to exit non-zero
      throw err;
  })
  .on('end', function () {
      // Close browser sync server
      browserSync.exit();
      done();
  });

}`

I have removed suites from the protractor.config file and using them as input to gulp src. This make the tests work.

Is this the road to take or is there a better way?

Error: ECONNREFUSED connect ECONNREFUSED 127.0.0.1:48107 for gulp protractor

vegan@vegan:~/xxx-yyy/gateway$ gulp protractor qa
[10:52:58] Using gulpfile ~/xxx-yyy/gateway/gulpfile.js
[10:52:58] Starting 'protractor'...
[10:52:58] Starting 'qa'...
[10:52:58] Finished 'qa' after 76 ฮผs
Using ChromeDriver directly...
[launcher] Running 1 instances of WebDriver

/home/vegan/xxx-yyy/gateway/node_modules/selenium-webdriver/http/index.js:174
      callback(new Error(message));
               ^
Error: ECONNREFUSED connect ECONNREFUSED 127.0.0.1:48107
    at ClientRequest.<anonymous> (/home/vegan/xxx-yyy/gateway/node_modules/selenium-webdriver/http/index.js:174:16)
    at emitOne (events.js:90:13)
    at ClientRequest.emit (events.js:182:7)
    at Socket.socketErrorListener (_http_client.js:306:9)
    at emitOne (events.js:90:13)
    at Socket.emit (events.js:182:7)
    at emitErrorNT (net.js:1265:8)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickCallback (internal/process/next_tick.js:98:9)
From: Task: WebDriver.createSession()
    at Function.webdriver.WebDriver.acquireSession_ (/home/vegan/xxx-yyy/gateway/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:157:22)
    at Function.webdriver.WebDriver.createSession (/home/vegan/xxx-yyy/gateway/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:131:30)
    at new Driver (/home/vegan/xxx-yyy/gateway/node_modules/selenium-webdriver/chrome.js:810:36)
    at [object Object].DirectDriverProvider.getNewDriver (/home/vegan/xxx-yyy/gateway/node_modules/gulp-protractor/node_modules/protractor/lib/driverProviders/direct.js:68:16)
    at [object Object].Runner.createBrowser (/home/vegan/xxx-yyy/gateway/node_modules/gulp-protractor/node_modules/protractor/lib/runner.js:186:37)
    at /home/vegan/xxx-yyy/gateway/node_modules/gulp-protractor/node_modules/protractor/lib/runner.js:276:21
    at _fulfilled (/home/vegan/xxx-yyy/gateway/node_modules/gulp-protractor/node_modules/q/q.js:797:54)
    at self.promiseDispatch.done (/home/vegan/xxx-yyy/gateway/node_modules/gulp-protractor/node_modules/q/q.js:826:30)
    at Promise.promise.promiseDispatch (/home/vegan/xxx-yyy/gateway/node_modules/gulp-protractor/node_modules/q/q.js:759:13)
    at /home/vegan/xxx-yyy/gateway/node_modules/gulp-protractor/node_modules/q/q.js:525:49
[launcher] Process exited with error code 1
[10:52:58] gulp-notify: [JHipster Gulp Build] Error: protractor exited with code 1
[10:52:58] Finished 'protractor' after 641 ms
[10:52:58] E2E Tests failed

i get this error when i run gulp protractor qa

[![enter image description here][1]][1]

it says

       at new Driver (/home/vegan/xxx-yyy/gateway/node_modules/selenium-webdriver/chrome.js:810:36)

it opens a chrome browser when i run but it stays at there browser.

the path is

/home/vegan/xxx/gateway/node_modules/selenium-webdriver

i do

webdriver-manager update but it doesnot work

Why does thi happen?

image

UPDATE

this is in packagejson in selenumwebdriver

{
  "_args": [
    [
      "selenium-webdriver@https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.48.2.tgz",
      "/home/vegan/xxx-yyyy/gateway"
    ]
  ],
  "_from": "[email protected]",
  "_id": "[email protected]",
  "_inCache": true,
  "_location": "/selenium-webdriver",
  "_phantomChildren": {
    "bufferutil": "1.2.1",
    "options": "0.0.6",
    "ultron": "1.0.2",
    "utf-8-validate": "1.2.2",
    "xmlbuilder": "4.2.1"
  },
  "_requested": {
    "name": "selenium-webdriver",
    "raw": "selenium-webdriver@https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.48.2.tgz",
    "rawSpec": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.48.2.tgz",
    "scope": null,
    "spec": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.48.2.tgz",
    "type": "remote"
  },
  "_requiredBy": [
    "/gulp-protractor/protractor",
    "/protractor"
  ],
  "_resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.48.2.tgz",
  "_shasum": "b26a4631430d0a9f36284ee0cfe09676e8f348ca",
  "_shrinkwrap": null,
  "_spec": "selenium-webdriver@https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.48.2.tgz",
  "_where": "/home/vegan/xx-yyyy/gateway",
  "bugs": {
    "url": "https://github.com/SeleniumHQ/selenium/issues"
  },
  "dependencies": {
    "adm-zip": "0.4.4",
    "rimraf": "^2.2.8",
    "tmp": "0.0.24",
    "ws": "^0.8.0",
    "xml2js": "0.4.4"
  },
  "description": "The official WebDriver JavaScript bindings from the Selenium project",
  "devDependencies": {
    "express": "^4.11.2",
    "mocha": ">= 1.21.x",
    "multer": "^0.1.7",
    "promises-aplus-tests": "^2.1.0",
    "serve-index": "^1.6.1"
  },
  "engines": {
    "node": ">= 0.12.x"
  },
  "homepage": "https://github.com/SeleniumHQ/selenium",
  "keywords": [
    "automation",
    "selenium",
    "testing",
    "webdriver",
    "webdriverjs"
  ],
  "license": "Apache-2.0",
  "main": "./index",
  "name": "selenium-webdriver",
  "optionalDependencies": {},
  "readme": "# selenium-webdriver\n\nSelenium is a browser automation library. Most often used for testing\nweb-applications, Selenium may be used for any task that requires automating\ninteraction with the browser.\n\n## Installation\n\nSelenium supports Node `0.12.x` and `4.x`. Users on Node `0.12.x` must run with\nthe --harmony flag. Selenium may be installed via npm with\n\n    npm install selenium-webdriver\n\nOut of the box, Selenium includes everything you need to work with Firefox. You\nwill need to download additional components to work with the other major\nbrowsers. The drivers for Chrome, IE, PhantomJS, and Opera are all standalone\nexecutables that should be placed on your\n[PATH](http://en.wikipedia.org/wiki/PATH_%28variable%29). The SafariDriver\nbrowser extension should be installed in your browser before using Selenium; we\nrecommend disabling the extension when using the browser without Selenium or\ninstalling the extension in a profile only used for testing.\n\n| Browser           | Component                          |\n| ----------------- | ---------------------------------- |\n| Chrome            | [chromedriver(.exe)][chrome]       |\n| Internet Explorer | [IEDriverServer.exe][release]      |\n| PhantomJS         | [phantomjs(.exe)][phantomjs]       |\n| Opera             | [operadriver(.exe)][opera]         |\n| Safari            | [SafariDriver.safariextz][release] |\n\n## Usage\n\nThe sample below and others are included in the `example` directory. You may\nalso find the tests for selenium-webdriver informative.\n\n    var webdriver = require('selenium-webdriver'),\n        By = require('selenium-webdriver').By,\n        until = require('selenium-webdriver').until;\n\n    var driver = new webdriver.Builder()\n        .forBrowser('firefox')\n        .build();\n\n    driver.get('http://www.google.com/ncr');\n    driver.findElement(By.name('q')).sendKeys('webdriver');\n    driver.findElement(By.name('btnG')).click();\n    driver.wait(until.titleIs('webdriver - Google Search'), 1000);\n    driver.quit();\n\n### Using the Builder API\n\nThe `Builder` class is your one-stop shop for configuring new WebDriver\ninstances. Rather than clutter your code with branches for the various browsers,\nthe builder lets you set all options in one flow. When you call\n`Builder#build()`, all options irrelevant to the selected browser are dropped:\n\n    var webdriver = require('selenium-webdriver'),\n        chrome = require('selenium-webdriver/chrome'),\n        firefox = require('selenium-webdriver/firefox');\n\n    var driver = new webdriver.Builder()\n        .forBrowser('firefox')\n        .setChromeOptions(/* ... */)\n        .setFirefoxOptions(/* ... */)\n        .build();\n\nWhy would you want to configure options irrelevant to the target browser? The\n`Builder`'s API defines your _default_ configuration. You can change the target\nbrowser at runtime through the `SELENIUM_BROWSER` environment variable. For\nexample, the `example/google_search.js` script is configured to run against\nFirefox. You can run the example against other browsers just by changing the\nruntime environment\n\n    # cd node_modules/selenium-webdriver\n    node example/google_search\n    SELENIUM_BROWSER=chrome node example/google_search\n    SELENIUM_BROWSER=safari node example/google_search\n\n### The Standalone Selenium Server\n\nThe standalone Selenium Server acts as a proxy between your script and the\nbrowser-specific drivers. The server may be used when running locally, but it's\nnot recommend as it introduces an extra hop for each request and will slow\nthings down. The server is required, however, to use a browser on a remote host\n(most browser drivers, like the IEDriverServer, do not accept remote\nconnections).\n\nTo use the Selenium Server, you will need to install the\n[JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html) and\ndownload the latest server from [Selenium][release]. Once downloaded, run the\nserver with\n\n    java -jar selenium-server-standalone-2.45.0.jar\n\nYou may configure your tests to run against a remote server through the Builder\nAPI:\n\n    var driver = new webdriver.Builder()\n        .forBrowser('firefox')\n        .usingServer('http://localhost:4444/wd/hub')\n        .build();\n\nOr change the Builder's configuration at runtime with the `SELENIUM_REMOTE_URL`\nenvironment variable:\n\n    SELENIUM_REMOTE_URL=\"http://localhost:4444/wd/hub\" node script.js\n\nYou can experiment with these options using the `example/google_search.js`\nscript provided with `selenium-webdriver`.\n\n## Documentation\n\nAPI documentation is included in the `docs` directory and is also available\nonline from the [Selenium project][api]. Addition resources include\n\n- the #selenium channel on freenode IRC\n- the [[email protected]][users] list\n- [SeleniumHQ](http://www.seleniumhq.org/docs/) documentation\n\n## Contributing\n\nContributions are accepted either through [GitHub][gh] pull requests or patches\nvia the [Selenium issue tracker][issues]. You must sign our\n[Contributor License Agreement][cla] before your changes will be accepted.\n\n## Issues\n\nPlease report any issues using the [Selenium issue tracker][issues]. When using\nthe issue tracker\n\n- __Do__ include a detailed description of the problem.\n- __Do__ include a link to a [gist](http://gist.github.com/) with any\n    interesting stack traces/logs (you may also attach these directly to the bug\n    report).\n- __Do__ include a [reduced test case][reduction]. Reporting \"unable to find\n    element on the page\" is _not_ a valid report - there's nothing for us to\n    look into. Expect your bug report to be closed if you do not provide enough\n    information for us to investigate.\n- __Do not__ use the issue tracker to submit basic help requests. All help\n    inquiries should be directed to the [user forum][users] or #selenium IRC\n    channel.\n- __Do not__ post empty \"I see this too\" or \"Any updates?\" comments. These\n    provide no additional information and clutter the log.\n- __Do not__ report regressions on closed bugs as they are not actively\n    monitored for upates (especially bugs that are >6 months old). Please open a\n    new issue and reference the original bug in your report.\n\n## License\n\nLicensed to the Software Freedom Conservancy (SFC) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The SFC licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n\n[api]: http://seleniumhq.github.io/selenium/docs/api/javascript/\n[cla]: http :/ /go o.gl/qC50R\n[chrome]: http://chromedriver.storage.googleapis.com/index.html\n[gh]: https://github.com/SeleniumHQ/selenium/\n[issues]: https://github.com/SeleniumHQ/selenium/issues\n[opera]: https://github.com/operasoftware/operachromiumdriver/releases\n[phantomjs]: http://phantomjs.org/\n[reduction]: http://www.webkit.org/quality/reduction.html\n[release]: http://selenium-release.storage.googleapis.com/index.html\n[users]: https://groups.google.com/forum/#!forum/selenium-users\n",
  "readmeFilename": "README.md",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/SeleniumHQ/selenium.git"
  },
  "scripts": {
    "test": "mocha --harmony -t 600000 --recursive test"
  },
  "version": "2.48.2"
}

those are versions

vegan@vegan:~/xx-yyyy/gateway$ node -v
v5.12.0
vegan@vegan:~/xx-yyyy/gateway$ npm -v
3.8.6

my friend also has this versions but he can run Also i could until lasst week. I dont know what happened. I deleted node modules, resetted all but did not work.

i dont know what i can give information about.

i also tried this

http://stackoverflow.com/a/34758398/6804200

changed configjson to this

{
  "webdriverVersions": {
      "seleniumServerJar": './node_modules/protractor/selenium/selenium-server-standalone-2.51.0.jar',
      "chromedriver": "2.21",
    "iedriver": "2.51.0"
  }
}

but nothng changed.

i did also npm update

gulp protractor is

gulp.task(
    'protractor', function () {


        configObj['args'] = [];//to be able to add multiple parameters

        if (argv.suite) {
            configObj['args'].push(
                '--suite',
                argv.suite
            );
        }

        return gulp.src([])
            .pipe(plumber({errorHandler: handleErrors}))
            .pipe(protractor(configObj))
            .on(
                'error', function () {
                        gutil.log('E2E Tests failed');
                        process.exit(1);
                    }
                );
        }
    );
var configObj = {
    configFile: config.test + 'protractor.conf.js'
};

protractorconf is

var HtmlScreenshotReporter = require("protractor-jasmine2-screenshot-reporter");
var JasmineReporters = require('jasmine-reporters');

var prefix = 'src/test/javascript/'.replace(/[^/]+/g, '..');



exports.config = {

    chromeDriver: prefix + 'node_modules/protractor/selenium/chromedriver',
    allScriptsTimeout: 240000,

    suites: {
        register: './e2e/account/register/*.js',
        login: './e2e/account/login/*.js'
        
    },

    capabilities: {
        'browserName': 'chrome'
    },

    directConnect: true,

    framework: 'jasmine2',

    jasmineNodeOpts: {
        showColors: true,
        defaultTimeoutInterval: 240000
    },
    onPrepare: function () {

        var disableNgAnimate = function () {
            angular
                .module('disableNgAnimate', [])
                .run(
                    [
                        '$animate',
                        function ($animate) {
                            $animate.enabled(false);
                        }
                    ]
                );
        };

        var disableCssAnimate = function () {
            angular
                .module('disableCssAnimate', [])
                .run(
                    function () {
                        var style = document.createElement('style');
                        style.type = 'text/css';
                        style.innerHTML = 'body * {' +
                            '-webkit-transition: none !important;' +
                            '-moz-transition: none !important;' +
                            '-o-transition: none !important;' +
                            '-ms-transition: none !important;' +
                            'transition: none !important;' +
                            '}';
                        document.getElementsByTagName('head')[0].appendChild(style);
                    }
                );
        };

        browser.addMockModule('disableNgAnimate', disableNgAnimate);
        browser.addMockModule('disableCssAnimate', disableCssAnimate);

        browser.driver.manage().window().maximize();


    }
};

gulp tasks of qa

gulp.task('qa', function () {

    argv.baseUrl = qaurl;

    configObj['args'].push(
        '--baseUrl',
        argv.baseUrl
    );
});

i got this when i do npm install

npm WARN lifecycle [email protected]~postinstall: cannot run in wd %s %s
(wd=%s) [email protected] webdriver-manager update
/home/vegan/xx-yyy/gateway npm WARN optional Skipping failed optional
dependency /chokidar/fsevents: npm WARN notsup Not compatible with
your operating system or architecture: [email protected]

vegan@vegan:~/xxx-/gateway$ sudo npm install --unsafe-perm

[email protected] postinstall /home/vegan/xxxgateway
webdriver-manager update

sh: 1: webdriver-manager: not found

npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: [email protected]
npm ERR! Linux 4.4.0-59-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "--unsafe-perm"
npm ERR! node v5.12.0
npm ERR! npm v3.8.6
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! [email protected] postinstall: webdriver-manager update
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the [email protected] postinstall script 'webdriver-manager update'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the gateway package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! webdriver-manager update
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs gateway
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls gateway
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR! /home/vegan/xxx/gateway/npm-debug.log

This is inside a spring boot project but this project doesnot have to be up in local because it is already up in server. So wwhen i run gulp, the browser should go to that url, qa url (in past it was going).. I tried both, upping my proejct or without it but still same.

vegan@vegan:~xx webdriver-manager upddae
**WARNING:root:could not open file '/etc/apt/sources.list'

webdriver-manager: command not found**

Also
i tried to delete node modules, gateway and tried again. but it is sme.


but if i do

vegan@vegan:~/xxx/gateway$ sudo npm install -g protractor
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
/usr/bin/webdriver-manager -> /usr/lib/node_modules/protractor/bin/webdriver-manager
/usr/bin/protractor -> /usr/lib/node_modules/protractor/bin/protractor
/usr/lib
โ””โ”€โ”ฌ [email protected]
โ”œโ”€โ”€ @types/[email protected]
โ”œโ”€โ”€ @types/[email protected]
โ”œโ”€โ”€ @types/[email protected]
โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ””โ”€โ”ฌ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ””โ”€โ”ฌ [email protected]
โ”‚ โ””โ”€โ”€ [email protected]
โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ””โ”€โ”€ [email protected]
โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ””โ”€โ”€ [email protected]
โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ””โ”€โ”€ [email protected]
โ”œโ”€โ”€ [email protected]
โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ””โ”€โ”€ [email protected]
โ”œโ”€โ”€ [email protected]
โ”œโ”€โ”ฌ [email protected]
โ”‚ โ””โ”€โ”ฌ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ””โ”€โ”€ [email protected]
โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ””โ”€โ”ฌ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ””โ”€โ”ฌ [email protected]
โ”‚ โ””โ”€โ”€ [email protected]
โ”œโ”€โ”ฌ [email protected]
โ”‚ โ””โ”€โ”€ [email protected]
โ”œโ”€โ”ฌ [email protected]
โ”‚ โ””โ”€โ”€ [email protected]
โ””โ”€โ”ฌ [email protected]
โ”œโ”€โ”€ [email protected]
โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ””โ”€โ”ฌ [email protected]
โ”‚ โ””โ”€โ”€ [email protected]
โ”œโ”€โ”€ [email protected]
โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”€ [email protected]
โ”‚ โ”œโ”€โ”€ [email protected]
โ”‚ โ””โ”€โ”€ [email protected]
โ””โ”€โ”€ [email protected]

this gives different error


vegan@vegan:~/xxx/gateway$ webdriver-manager update --chrome
/usr/lib/node_modules/protractor/node_modules/webdriver-manager/built/lib/cli/logger.js:66
    info(...msgs) {
         ^^^

SyntaxError: Unexpected token ...
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:387:25)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/usr/lib/node_modules/protractor/node_modules/webdriver-manager/built/lib/cli/index.js:8:10)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)

But i am not sure about if gulp uses this or not.

Question - run without gulp src

There is something that I don't understand. Protractor takes a config file with an array of suites, so why do I need to pipe spec files to it?

webDriver.webDriverUpdateAndStart is not a function

Hi,
Today I have updated the gulp-angular-protractor using npm to 0.4.0 and after everything was ready I'm getting

[08:40:07] 'protractor' errored after 128 ms
[08:40:07] TypeError in plugin 'gulp-angular-protractor'
Message:
    webDriver.webDriverUpdateAndStart is not a function

... and it fails to run. There were no problems with 0.3.0.

Tested with:

Gulp task hangs (never completes) with last output "gulp-angular-protractor - Webdriver standalone server will be closed"

After updating gulp-angular-protractor to v0.2.0 so that tests would run under Chrome 54+, I am seeing an issue where the gulp-angular-protractor task never finishes. The final output is "gulp-angular-protractor - Webdriver standalone server will be closed", but the task must be cancelled (command + c) in order to "complete" the task.

os: macOS 10.12.2
java: 1.8.0_112
npm: 2.15.9
node: v4.5.0

cc: @benjaminapetersen

ChromeDriver unable to maximize to defined values.

It seems the chromedriver downloaded by this module is not upto date. Following is not working

browser.driver.manage().window().setSize(1280, 780);

getting the error below. Though this method is working properly with protractor command and webdriver-manager's chromedriver.

E/launcher - WebDriverError: unknown error: cannot get automation extension
from unknown error: page could not be found: chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html
 (Session info: chrome=57.0.2987.98)
 (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.11.5 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 10.09 seconds
Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:03'
System info: host: 'Ayans-MacBook-Pro.local', ip: '10.221.5.127', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.5', java.version: '1.8.0_101'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1), userDataDir=/var/folders/_3/n14_hxp15tv6cs2rb040my4c0000gn/T/.org.chromium.Chromium.L9kbap}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=57.0.2987.98, platform=MAC, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: df6ec0f40d7a92842d79adc06b70234b
   at WebDriverError (/Users/ayanmodak/Google Drive/Foghorn/FogHornGitHub_Repo/velui/development/node_modules/gulp-angular-protractor/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:27:5)


Update engine requirement ?

It seems the protractor dependency use now recent version of NodeJs

For version 4.0.11:

"engines": {
    "node": ">=4.2.x"
  }

For version 5.1.1:

"engines": {
    "node": ">=6.9.x"
  }

Try to deal with it

Updating protractor version

Hi there, could you update the protractor version to the last one?

Or maybe not use protractor as a dependency, so everybody can use the version they want.

Or another possibility could be to allow to pass the protractor version one is using, as I've seen in others plugins, something like:

{
    protractor: require('protractor')
}

Thanks!

Gulp task does not terminate when using Protractor 5

If I run the my task via gulp it does not terminate (both on clean runs or test failures).
The last log is

[10:13:39] gulp-angular-protractor - Webdriver standalone server is stopped

and in case of test failures:

{ [Error: protractor exited with code 1]
  message: 'protractor exited with code 1',
  showStack: false,
  showProperties: true,
  plugin: 'gulp-angular-protractor',
  __safety: { toString: [Function: bound ] } }

This is my gulp task:

gulp.task('test', function (done) {
    gulp.src([])
        .pipe(gulpProtractorAngular({
            configFile: 'test/conf.js',
            autoStartStopServer: true
        })).on('error', function (error) {
            console.error(error)
        }).on('end', done);
});

Old Selenium WebDriver and Chrome Driver version with latest 0.1.3 against 0.0.6

Hello Julien,

When I was using 0.0.6 version the selenium webdriver used is the latest one i.e. 2.53.1 or 2.53.3 and chrome driver 2.22 while when I use the latest version 0.1.3 then it uses selenium webdriver version as 2.48.0 and chrome driver version as 2.20.

Check below traces:
0.1.3

D:\gulp-angular-protractor\examples\example-03>gulp protractor
(node:11532) fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module, please update it to a more recent vers
ion.
[13:21:23] Using gulpfile D:\gulp-angular-protractor\examples\example-03\Gulpfile.js
[13:21:23] Starting 'protractor'...
[13:21:23] gulp-angular-protractor - The plugin is retrieved and will start soon
[13:21:23] gulp-angular-protractor - We will try to start and stop automatically the WebDriver server
[13:21:23] gulp-angular-protractor - The selenium address is: http://localhost:4444/wd/hub
[13:21:23] gulp-angular-protractor - The selenium address used is: http://localhost:4444/wd/hub
[13:21:23] gulp-angular-protractor - The selenium shutdown address used is: http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer
[13:21:23] gulp-angular-protractor - We have the config file to the following path: D:\gulp-angular-protractor\examples\example-03\protractor.conf.js
[13:21:23] gulp-angular-protractor - Webdriver standalone will be updated
Updating selenium standalone
downloading https://selenium-release.storage.googleapis.com/2.48/selenium-server-standalone-2.48.2.jar...
Updating chromedriver
downloading https://chromedriver.storage.googleapis.com/2.20/chromedriver_win32.zip...
chromedriver_2.20.zip downloaded to D:\gulp-angular-protractor\examples\example-03\node_modules\gulp-angular-protractor\node_modules\gulp-protractor\n
ode_modules\protractor\selenium\chromedriver_2.20.zip
selenium-server-standalone-2.48.2.jar downloaded to D:\gulp-angular-protractor\examples\example-03\node_modules\gulp-angular-protractor\node_modules\g
ulp-protractor\node_modules\protractor\selenium\selenium-server-standalone-2.48.2.jar
[13:21:41] gulp-angular-protractor - Webdriver standalone is updated
[13:21:41] gulp-angular-protractor - Webdriver standalone server will be started
[13:21:42] seleniumProcess.pid: 9124

[13:21:44] 13:21:44.247 INFO - Launching a standalone Selenium Server

0.0.6

[13:29:39] gulp-angular-protractor - The plugin is retrieved and will start soon
[13:29:39] gulp-angular-protractor - We will try to start and stop automatically the WebDriver server
[13:29:39] gulp-angular-protractor - The selenium address is: http://localhost:4444/wd/hub
[13:29:39] gulp-angular-protractor - The selenium address used is: http://localhost:4444/wd/hub
[13:29:39] gulp-angular-protractor - The selenium shutdown address used is: http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer
[13:29:39] gulp-angular-protractor - Webdriver standalone will be updated
[13:29:58] I/update - selenium standalone: file exists D:\projects\myproject\node_modules\protractor\node_modules\webdriver-manager\selenium\selenium-server-standalone-2.53.1.jar
[13:29:58] I/update - selenium standalone: v2.53.1 up to date
[13:29:58] I/update - chromedriver: file exists D:\projects\myproject\node_modules\protractor\node_modules\webdriver-manager\selenium\chromedriver_2.22win32.zip
[13:29:58] I/update - chromedriver: unzipping chromedriver_2.22win32.zip
[13:29:58] I/update - chromedriver: v2.22 up to date
[13:29:58] gulp-angular-protractor - Webdriver standalone is updated
[13:29:58] gulp-angular-protractor - Webdriver standalone server will be started
[13:30:00] [13:30:00] I/start - java -jar D:\projects\myproject\node_modules\protractor\node_modules\webdriver-manager\selenium\selenium-server-standalone-2.53.1.jar -Dwebdriver.chrome.driver=D:\projects\myproject\node_modules\protractor\node_modules\w
ebdriver-manager\selenium\chromedriver_2.22.exe -Dwebdriver.edge.driver=C:\Program Files (x86)\Microsoft Web Driver\MicrosoftWebDriver.exe

[13:30:00] [13:30:00] I/start - seleniumProcess.pid: 7844

[13:30:01] 13:30:01.482 INFO - Launching a standalone Selenium Server

[13:30:01] Setting system property webdriver.chrome.driver to D:\projects\myproject\node_modules\protractor\node_modules\webdr
iver-manager\selenium\chromedriver_2.22.exe
[13:30:01]
Setting system property webdriver.edge.driver to C:\Program Files (x86)\Microsoft Web Driver\MicrosoftWebDriver.exe

[13:30:01] 13:30:01.865 INFO - Java: Oracle Corporation 25.92-b14

[13:30:01] 13:30:01.866 INFO - OS: Windows 7 6.1 amd64

[13:30:01] 13:30:01.888 INFO - v2.53.1, with Core v2.53.1. Built from revision a36b8b1

[13:30:02] 13:30:02.010 INFO - Driver class not found: com.opera.core.systems.OperaDriver

[13:30:02] 13:30:02.010 INFO - Driver provider com.opera.core.systems.OperaDriver is not registered

[13:30:02] 13:30:02.026 INFO - Driver provider org.openqa.selenium.safari.SafariDriver registration is skipped:
registration capabilities Capabilities [{browserName=safari, version=, platform=MAC}] does not match the current platform VISTA

[13:30:02] 13:30:02.028 INFO - Driver class not found: org.openqa.selenium.htmlunit.HtmlUnitDriver

[13:30:02] 13:30:02.028 INFO - Driver provider org.openqa.selenium.htmlunit.HtmlUnitDriver is not registered

[13:30:02] 13:30:02.463 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub

[13:30:02] 13:30:02.463 INFO - Selenium Server is up and running

[13:30:02] gulp-angular-protractor - Webdriver standalone server is started
[13:30:02] gulp-angular-protractor - We will run the Protractor engine
[13:30:14] I/hosted - Using the selenium server at http://localhost:4444/wd/hub
[13:30:14] I/launcher - Running 1 instances of WebDriver
Spec started
Started

Please do take a look at this issue.

webdriver update fail on clean environment with autoStartStopServer set to false

Configuration:

gulpProtractorAngular({
'configFile': 'protractor-config.js',
'debug': false,
'autoStartStopServer': false,
'webDriverUpdate': false,
'webDriverUpdate.skip': true
})

Error message:
[15:30:10] E/local - Error code: 135
[15:30:10] E/local - Error message: No update-config.json found. Run 'webdriver-manager update' to download bi
naries.
[15:30:10] E/local - Error: No update-config.json found. Run 'webdriver-manager update' to download binaries.

WORKAROUND:
If you set autoStartStopServer to true and than to false it is ok

handleUncaughtExceptions passed to Cucumberjs

Hi,

I got problem when I use Protractor + CucumberJS. If I execute my test via cli and get exceptions, protractor will stop and does not execute the remaining scenario. I found the runner.js inside this plugin has this line:

require('source-map-support').install();

When I changed this to:

require('source-map-support').install({
handleUncaughtExceptions: false
});

Protractor will execute remaining scenario. Is there any way to pass this via config file instead of modifying this script directly ?

Fails with Chrome 57

Seems to be the same issue as #26

The version of Chromedriver currently used (via the webdriver-manager dependency) is 2.25, which doesn't support Chrome 57.

Updating the webdriver-manager to version 12.0.4 should solve the issue, as it depends on Chromedriver v. 2.29

(It would also be helpful to update the protractor dependency, as the current version doesn't seem to work with the protractor-console-plugin package)

More than one config file is specified error

Hello,

I am currently trying to integrate this into a test suite. The aim is to have a front end that allows the user to launch a request is to the server, the tests are then launched and the front-end is updated.

This front end allows to launch the test a couple of times if wanted.

Here is my code :

var testSuite = function(){
  gulp
      .src(['./test/testcases/*.js'])
      .pipe(gulpProtractorAngular({
         'configFile': './test/config/conf.js',
          'debug': false,
          'autoStartStopServer': true,
          'isVerbose': true,
      }))
}
app.post('/results', function (req, res) {
  if (req.body.test === 'start') {
    testSuite();
  }
});

This works perfectly the first time launched, but if it is launched a second time, I get this error message:

Usage: protractor [configFile] [options]
configFile defaults to protractor.conf.js
The [options] object will override values from the config file.
Error: more than one config file specified

Protractor doesn't continue on verification selenium

I think there might be an issue with that, if not then please let me know.

In node_modules/gulp-angular-protractor/web-driver.js there is a check on selenium to find the string "jetty" but as of 2.46 i believe this is no longer called jetty but "Selenium Server is up and running" on the older version this string was "Started org.openqa.jetty.jetty.Server". I see a similar issue being fixed the same way nightwatchjs/nightwatch@d1495b0

Configure for Page Object pattern project

How do I configure this to make it work when I have following project structure?
pages has PO files, specs has specifications files, data has files with all strings and parameters used for tests, selenium has chromeDriver etc.
capture

Error: spawn ENOTDIR

using your plugin to run some e2e tests and got the following error running the gulp task

[20:04:01] gulp-angular-protractor - Webdriver standalone will be updated
selenium standalone is up to date.
chromedriver is up to date.
[20:04:01] gulp-angular-protractor - Webdriver standalone is updated
[20:04:01] gulp-angular-protractor - Webdriver standalone server will be started
internal/child_process.js:298
throw errnoException(err, 'spawn');
^

Error: spawn ENOTDIR
at exports._errnoException (util.js:856:11)
at ChildProcess.spawn (internal/child_process.js:298:11)
at Object.exports.spawn (child_process.js:367:9)
at Object.module.exports.webDriverStandaloneStart (/Users/kendallarneaud/Documents/Git/heroku/aurasma-treasure-hunt-lumen-dingo/public/node_modules/gulp-angular-protractor/gulp-angular-protractor/web-driver.js:116:36)
at ChildProcess. (/Users/kendallarneaud/Documents/Git/heroku/aurasma-treasure-hunt-lumen-dingo/public/node_modules/gulp-angular-protractor/gulp-angular-protractor/web-driver.js:176:18)
at ChildProcess.g (events.js:273:16)
at emitTwo (events.js:100:13)
at ChildProcess.emit (events.js:185:7)
at maybeClose (internal/child_process.js:827:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)

Update dependencies

To resolve some protractor and webdriver issues, I plan to migrate to:

  • protractor 0.4.11
  • webdriver-manager 10.2.8

debug mode doesn't seem to work with 'debug': true in gulp task options

Hi,

I'm trying to run protractor in debug mode by setting the 'debug' option to true as explained in the documentation. Below, my protractor gulp task:

gulp.task('protractor', function () {
    return gulp
      .src(['src/test/**/*_e2e.js'])
      .pipe(g.angularProtractor({
        'configFile': 'protractor.conf.js',
        'autoStartStopServer': true,
        'args': ['--baseUrl', 'http://127.0.0.1:3000']
        'debug': true
      }))
      .on('end', function () {
        g.util.log('E2E Testing complete');
        process.exit();
      })
      .on('error', function () {
        g.util.log('E2E Tests failed');
        process.exit(1);
      });
  });

However, the debug mode doesn't seem to be enabled, I don't have the debug console.
If I put 'debug' directly in the args array, always in the gulp task option, it works fine...

gulp.task('protractor', function () {
    return gulp
      .src(['src/test/**/*_e2e.js'])
      .pipe(g.angularProtractor({
        'configFile': 'protractor.conf.js',
        'autoStartStopServer': true,
        'args': ['debug', '--baseUrl', 'http://127.0.0.1:3000']
      }))
      .on('end', function () {
        g.util.log('E2E Testing complete');
        process.exit();
      })
      .on('error', function () {
        g.util.log('E2E Tests failed');
        process.exit(1);
      });
  });

Npm packages versions:
โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”œโ”€โ”ฌ [email protected]
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected]

I use the 0.0.6 version because of an issue with the selenium webdriver.

Does this work with Protractor 4.0.2?

I've been using gulp-angular-protractor, and it worked with Protractor 4.0.0. I changed my tests to Typescript and am transpiling to Javascript. They run fine manually with the command prompt, and using gulp-angular-protractor, most run, except for those that are using ExpectedCondition. Then I upgrade Protractor to 4.0.2, and I can still run them all fine manually, but none run with with gulp-angular-protractor. The application is not launching and the test starts but cannot find the locators. Are there any issues with Protractor 4.0.2?

Selenium Server not starting

Hello,

I am facing a problem in which the tests are not running on my machine which is Windows 7 64bit.
Previously everything was running fine and suddenly nothing is working.
Can anybody help or guide me to resolve this issue or help with check points?
I am getting below traces in the Git Bash.


rahul.raut1@mypc MINGW64 /d/gulp-angular-protractor/examples/example-01 (master)
$ gulp e2e
(node:6140) fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module, please update it to a more recent version.
[17:09:09] Using gulpfile D:\gulp-angular-protractor\examples\example-01\Gulpfile.js
[17:09:09] Starting 'webdriver_update'...
[17:09:10] I/update - selenium standalone: file exists D:\gulp-angular-protractor\examples\example-01\node_modules\protractor\node_modules\webdriver-manager\selenium\selenium-server-standalone-2.53.1.jar
[17:09:10] I/update - selenium standalone: v2.53.1 up to date
[17:09:10] I/update - chromedriver: file exists D:\gulp-angular-protractor\examples\example-01\node_modules\protractor\node_modules\webdriver-manager\selenium\chromedriver_2.22win32.zip
[17:09:10] I/update - chromedriver: unzipping chromedriver_2.22win32.zip
[17:09:11] I/update - chromedriver: v2.22 up to date
[17:09:11] Finished 'webdriver_update' after 2.21 s
[17:09:11] Starting 'e2e'...
[17:09:11] gulp-angular-protractor - The plugin is retrieved and will start soon
[17:09:11] gulp-angular-protractor - We will try to start and stop automatically the WebDriver server
[17:09:11] gulp-angular-protractor - The selenium address is: http://localhost:4444/wd/hub
[17:09:11] gulp-angular-protractor - The selenium address used is: http://localhost:4444/wd/hub
[17:09:11] gulp-angular-protractor - The selenium shutdown address used is: http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer
[17:09:11] gulp-angular-protractor - We have the config file to the following path: D:\gulp-angular-protractor\examples\example-01\protractor.conf.js
[17:09:11] gulp-angular-protractor - Webdriver standalone will be updated
selenium standalone is up to date.
chromedriver is up to date.
[17:09:12] gulp-angular-protractor - Webdriver standalone is updated
[17:09:12] gulp-angular-protractor - Webdriver standalone server will be started
[17:09:12] '.' is not recognized as an internal or external command,
operable program or batch file.

[17:09:12] gulp-angular-protractor - Webdriver standalone server will be closed
[17:09:12] gulp-angular-protractor - We will run the Protractor engine
'.' is not recognized as an internal or external command,
operable program or batch file.
[17:09:13] gulp-angular-protractor - An error occured to stop the Webdriver standalone server
{ [Error: protractor exited with code 1]
  message: 'protractor exited with code 1',
  showStack: false,
  showProperties: true,
  plugin: 'gulp-angular-protractor',
  __safety: { toString: [Function: bound ] } }

rahul.raut1@mypc MINGW64 /d/gulp-angular-protractor/examples/example-01 (master)
$

It doesn't run the tests after the WebDriver starts

This is my gulp task, which is working fine but running the tests:

// Setting up the test task
gulp.task("protractor", [fileHandlerTask, "connect"], function(callback) {
    gulp
        .src(["tests/menu-spec.js"])
        .pipe(gulpProtractorAngular({
            configFile: "tests/conf.js",
            debug: false,
            autoStartStopServer: true
        }))
        .on("error", function(error) {
            console.log(error);
        })
        .on("end", callback);
});

How to pass multiCapabilities from gulp-angular-protractor

Hi,

I need to pass multiCapabilities from gulp-angular-protractor.
Following is my requirement:
multiCapabilities: [
{
browserName : 'internet explorer',
seleniumAddress: 'http://localhost:4444/wd/hub'
},
{
browserName : 'chrome',
seleniumAddress: 'http://172.23.230.198:4444/wd/hub'
}

I tried following but its throwing error
gulp.src([])
.pipe(gulpProtractorAngular({
'configFile': './conf.js',
'debug': true,
'autoStartStopServer': false,
args: [
'--specs', './testExecution/UserManagement/Login/*.js',
'--multiCapabilities.0.browserName', 'internet explorer',
'--multiCapabilities.1.browserName', 'chrome'
],
keepAlive: true
}))
.on('error', function (e) {
console.log("specs: " + specs);
console.log(e);
process.exit(1);
return new gutil.PluginError("ERROR", "Error", {showStack: true});
})
.on('end', function (){
});

Test report is not generated

Hi,

var gulp = require('gulp'),
gulpProtractorAngular = require('gulp-angular-protractor');

// Setting up the test task
gulp.task('protractor-test', function(callback) {
gulp
.src(['/tests/*/.js'])
.pipe(gulpProtractorAngular({
'configFile': 'protractor.conf.js',
'debug': false,
'autoStartStopServer': true
}))
.on('error', function(e) {
console.log(e);
})
.on('end', callback);
});

it's working fine but Test report is not generated .

note: without using GULP task then Test Report working fine .

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.