Code Monkey home page Code Monkey logo

selenoid's Introduction

Selenoid

Build Status Coverage Go Report Card Release Docker Pulls StackOverflow Tag

Selenoid is a powerful implementation of Selenium hub using Docker containers to launch browsers. Selenoid Animation

Features

One-command Installation

Start browser automation in minutes by downloading Configuration Manager binary and running just one command:

$ ./cm selenoid start --vnc --tmpfs 128

That's it! You can now use Selenoid instead of Selenium server. Specify the following Selenium URL in tests:

http://localhost:4444/wd/hub

Ready to use Browser Images

No need to manually install browsers or dive into WebDriver documentation. Available images: Browsers List

New images are added right after official releases. You can create your custom images with browsers.

Live Browser Screen and Logs

New rich user interface showing browser screen and Selenium session logs: Selenoid UI

Video Recording

  • Any browser session can be saved to H.264 video (example)
  • An API to list, download and delete recorded video files

Convenient Logging

  • Any browser session logs are automatically saved to files - one per session
  • An API to list, download and delete saved log files

Lightweight and Lightning Fast

Suitable for personal usage and in big clusters:

  • Consumes 10 times less memory than Java-based Selenium server under the same load
  • Small 6 Mb binary with no external dependencies (no need to install Java)
  • Browser consumption API working out of the box
  • Ability to send browser logs to centralized log storage (e.g. to the ELK-stack)
  • Fully isolated and reproducible environment

Detailed Documentation and Free Support

Maintained by a growing community:

Complete Guide & Build Instructions

Complete reference guide (including building instructions) can be found at: http://aerokube.com/selenoid/latest/

Selenoid in Kubernetes

Selenoid was initially created to be deployed on hardware servers or virtual machines and is not suitable for Kubernetes. Detailed motivation is described here. If you still need running Selenium tests in Kubernetes, then take a look at Moon - our dedicated solution for Kubernetes.

Known Users

JetBrains Yandex Sberbank Technology ThoughtWorks VK.com SuperJob PropellerAds AlfaBank 3CX IQ Option Mail.Ru Group Newegg.Com Badoo BCS Quality Lab AT Consulting Royal Caribbean International Sixt Testjar Flipdish RiAdvice

selenoid's People

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  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  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  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  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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

selenoid's Issues

selenoid exits in panic while running

Running selenoid with default of 5 images or limit 10 using chromebrowser always exits with a panic.

This happens when directing my tests against selenoid directly bypassing ggr.

I've used the setup provided by another user:

docker run -d --name selenoid -p 4445:4444 -v /private/etc/selenoid:/etc/selenoid:ro -v /var/run/docker.sock:/var/run/docker.sock aandryashin/selenoid:latest -limit 10
ip=`docker inspect --format {{.NetworkSettings.IPAddress}} selenoid`
xml ed --inplace -u '//host/@name' -v "$ip" /etc/grid-router/quota/test.xml
docker run -d --name ggr -p 4444:4444 -v /private/etc/grid-router/:/etc/grid-router:ro aandryashin/ggr:latest

The error:

2017/04/11 11:35:58 [SESSION_CREATED] [107178798f7afca475e3d7866ff76c54] [http://172.17.0.1:32817]
2017/04/11 11:35:58 [SESSION_CREATED] [1323325895d1276f25a92593122bb40d] [http://172.17.0.1:32818]
2017/04/11 11:35:58 [SESSION_CREATED] [4b47890c76cd26751c3d147625a1a65b] [http://172.17.0.1:32819]
panic: close of closed channel

goroutine 4286 [running]:
main.proxy.func1.3(0xc4202d6500)
	/home/travis/gopath/src/github.com/aandryashin/selenoid/selenoid.go:181 +0x1d6
net/http/httputil.(*ReverseProxy).ServeHTTP(0xc420391f70, 0x85d280, 0xc420404000, 0xc4202d6300)
	/home/travis/.gimme/versions/go1.8.linux.amd64/src/net/http/httputil/reverseproxy.go:159 +0x1be
main.proxy.func1(0xc4204ea780, 0x85d280, 0xc420404000, 0xc4202d6300)
	/home/travis/gopath/src/github.com/aandryashin/selenoid/selenoid.go:196 +0x117
created by main.proxy
	/home/travis/gopath/src/github.com/aandryashin/selenoid/selenoid.go:197 +0x7f

browsers.json:

{
  "chrome": {
    "default": "latest",
    "versions": {
      "latest": {
        "image": "selenoid/chrome:latest",
        "port": "4444"
      }
    }
  }
}

Pull specific browser version

Is there any way to pull a specific browser version for chrome or firefox? Or would that require updating the dockerfiles and maintaining my own images on dockerhub? When I tried the following it failed:

$ docker pull selenoid/firefox:48.0
Error response from daemon: manifest for selenoid/firefox:48.0 not found

I tried to find a gitter or slack channel for your work but didn't see anything. Is issues the best way to ask questions. I have a lot of interest in using this for some of my scenarios but I can't seem to get my chimp.js or webdriverio configurations correct. I can see the selenoid browser spinning up but it fails with the following error:

[22:35:29] COMMAND POST "/wd/hub/session"
[22:35:29] DATA {"desiredCapabilities":{"javascriptEnabled":true,"locationContextEnabled":true,"handlesAlerts":true,"rotatable":true,"maxInstances":1,"browserName":"firefox","loggingPrefs":{"browser":"ALL","driver":"ALL"},"requestOrigins":{"url":"http://webdriver.io","version":"4.6.2","name":"webdriverio"}}}
ERROR: [object Object]
firefox
Error

I have been struggling with this for a few days and decided it was time to break down and ask the experts.

/r

404 page not found within \wd\hub page

Hi!

I am trying to use selenoid with readme manual, but when Im opening hub page http://localhost:4444/wd/hub there is only 404 page not found message :(

I did all steps from your manual, but still getting error :(

curl http://localhost:4444/wd/hub -L
404 page not found
docker ps

CONTAINER ID        IMAGE                                               COMMAND                  CREATED             STATUS              PORTS                    NAMES
ba2dc8adf39b        aandryashin/selenoid:1.1.0                          "/usr/bin/selenoid -l"   12 minutes ago      Up 12 minutes       0.0.0.0:4444->4444/tcp   selenoid
docker logs selenoid

2017/04/13 13:04:58 Loading configuration files...
2017/04/13 13:04:58 Loaded configuration from [/etc/selenoid/browsers.json]
2017/04/13 13:04:58 Using default containers log configuration because of: read error: open config/container-logs.json: no such file or directory
2017/04/13 13:04:58 Timezone: Local
2017/04/13 13:04:58 Listening on :4444

What I am doing wrong?(

Selenoid status returns unknown username while proxying via ggr

@vania-pooh @aandryashin hi,

Just curious how we could force Selenoid displaying real username we used for authorization via ggr?

image

I have added users.htpasswd and used valid credentials in connection URL:

http://skorol:password@localhost:4444/wd/hub

However, selenoid status request always returns unknown. Any idea about the root cause?

Here's the log from ggr container:

image

Add auto-pull capability

Two modes should be supported:

  1. Always pull images from config on restart
  2. Pull images only when missing

Validation elements displaying in Chrome breaks selenoid

Trying to validate elements displaying. To do this I complete elements request to get all elements that path selector and then for each element complete /session/:sessionId/element/:elementId/displayed' async request (this requests sends in the same time). When trying to complete 23 displayed selenoid breaks with this error

2017/03/17 13:36:51 Process 23529 started in: 57.337089ms
2017/03/17 13:36:51 Proxying requests to: http://127.0.0.1:59373
2017/03/17 13:36:51 [SESSION_ATTEMPTED] [http://127.0.0.1:59373]
2017/03/17 13:36:52 [SESSION_CREATED] [c763e80c0377b8e02fa9fc57c8fa56ca] [http://127.0.0.1:59373]
2017/03/17 13:37:00 http: proxy error: read tcp 127.0.0.1:59609->127.0.0.1:59373: read: connection reset by peer
2017/03/17 13:37:00 http: proxy error: dial tcp 127.0.0.1:59373: getsockopt: connection reset by peer
2017/03/17 13:37:00 http: proxy error: read tcp 127.0.0.1:59615->127.0.0.1:59373: read: connection reset by peer
2017/03/17 13:37:00 http: proxy error: read tcp 127.0.0.1:59617->127.0.0.1:59373: read: connection reset by peer
panic: close of closed channel

goroutine 241 [running]:
main.proxy.func1.3(0xc4204a2600)
	/Users/a.pshenkin/go/src/github.com/aandryashin/selenoid/selenoid.go:164 +0x1d6
net/http/httputil.(*ReverseProxy).ServeHTTP(0xc42047ff70, 0x145e640, 0xc4204981c0, 0xc42000be00)
	/usr/local/Cellar/go/1.8/libexec/src/net/http/httputil/reverseproxy.go:159 +0x1be
main.proxy.func1(0xc420489020, 0x145e640, 0xc4204981c0, 0xc42000be00)
	/Users/a.pshenkin/go/src/github.com/aandryashin/selenoid/selenoid.go:179 +0x117
created by main.proxy
	/Users/a.pshenkin/go/src/github.com/aandryashin/selenoid/selenoid.go:180 +0x7f

Container is not removed on proxied request cancel

Seeing the following in the logfile:

2017/01/12 18:00:30 http: proxy error: net/http: request canceled

For each such error a container is not stopped:

822cff76b6f2        selenium/firefox_48.0:standalone   "/bin/sh -c /entrypoi"   16 hours ago        Up 16 hours         0.0.0.0:32912->4444/tcp   jolly_sammet

Failed to build for Windows architecture

Some dependencies should be added to govendor:

vania-pooh:/selenoid$ GOOS=windows GOARCH=386 go build -o selenoid.exe
vendor/github.com/docker/go-connections/sockets/sockets_windows.go:7:2: cannot find package "github.com/Microsoft/go-winio" in any of:
	/src/testing/go/src/github.com/aandryashin/selenoid/vendor/github.com/Microsoft/go-winio (vendor tree)
	/usr/local/Cellar/go/1.7.1/libexec/src/github.com/Microsoft/go-winio (from $GOROOT)
	/src/testing/go/src/github.com/Microsoft/go-winio (from $GOPATH)

However:

$ go get github.com/Microsoft/go-winio
# github.com/Microsoft/go-winio
../../Microsoft/go-winio/file.go:45: undefined: syscall.Overlapped

This is when building under Mac.

How can I mount directory to node containers ?

Hi,
I have several tests with upload and download files. Usually, I mount directories with required files to the container with browser but it this case I did not find the way how to configure selenoid to start containers and mount directories to them. Also, It is nice to know how to set dns and dns-search for containers which were started by selenoid.

Selenoid tries to remove previous session

Please see the logs:

2017/04/05 13:18:45 [NEW_REQUEST]
2017/04/05 13:18:45 [NEW_REQUEST_ACCEPTED]
2017/04/05 13:18:45 Locating the service for chrome 56.0
2017/04/05 13:18:45 Using docker service for chrome 56.0
2017/04/05 13:18:45 Creating Docker container selenoid/chrome:latest ...
2017/04/05 13:18:45 Starting container...
2017/04/05 13:18:46 Container 4db81d8f8a782471ea636b1827cfaa1e4bc4519ed004255b10dfd77089a90735 started
2017/04/05 13:18:46 52.986115ms
2017/04/05 13:18:46 proxying requests to: http://172.17.0.1:33749
2017/04/05 13:18:46 [SESSION_ATTEMPTED] [http://172.17.0.1:33749]
2017/04/05 13:18:47 [SESSION_CREATED] [f6a6c44a5a06667b07853fc3e42bea84] [http://172.17.0.1:33749]
2017/04/05 13:18:47 [SESSION_DELETED] [bef618bcfe72275ac1b884642d50e538]
2017/04/05 13:18:47 http: proxy error: context canceled
Removing container f09a782da7ff0f627726c8a494bf995fa998e86d1214e0672f20db63280fcd68
error: unable to remove container f09a782da7ff0f627726c8a494bf995fa998e86d1214e0672f20db63280fcd68 Error response from daemon: No such container: f09a782da7ff0f627726c8a494bf995fa998e86d1214e0672f20db63280fcd68

Container 4db81d8f8a782471ea636b1827cfaa1e4bc4519ed004255b10dfd77089a90735 was created but Selenoid tries to remove the previous one f09a782da7ff0f627726c8a494bf995fa998e86d1214e0672f20db63280fcd68 as well as previous session bef618bcfe72275ac1b884642d50e538.

Ability to set custom screen resolution

When screenResolution capability is passed - need to check its format: 1024x768 and set SCREEN_RESOLUTION environment variable to 1024x768x24 when launching container. It's up to containers to handle this variable.

Unable to create internal browser container

Hi @aandryashin @vania-pooh,

On MacOS I've faced with an issue that selenoid container can't internally raise chrome container.

Here's how I start a root container:

docker run -d --name selenoid-1 -p 4444:4444 -v /etc/selenoid:/etc/selenoid:ro -v /var/run/docker.sock:/var/run/docker.sock aandryashin/selenoid:latest

Here are container's logs:

2017/03/27 08:57:31 Loading configuration files...
2017/03/27 08:57:31 Loaded configuration from [/etc/selenoid/browsers.json]
2017/03/27 08:57:31 Using default containers log configuration because of: read error: open config/container-logs.json: no such file or directory
2017/03/27 08:57:31 Timezone: Local
2017/03/27 08:57:31 Listening on :4444
2017/03/27 08:58:20 [NEW_REQUEST]
2017/03/27 08:58:20 [NEW_REQUEST_ACCEPTED]
2017/03/27 08:58:20 Locating the service for chrome latest
2017/03/27 08:58:20 Using docker service for chrome latest
2017/03/27 08:58:20 Creating Docker container selenoid/chrome:latest ...
2017/03/27 08:58:21 Starting container...
2017/03/27 08:58:21 Container 0fe4e8516085455e922a2eb74fd03248e8206c9f124af073d4157310e31f490a started
Removing container 0fe4e8516085455e922a2eb74fd03248e8206c9f124af073d4157310e31f490a
Container 0fe4e8516085455e922a2eb74fd03248e8206c9f124af073d4157310e31f490a removed
2017/03/27 08:58:32 [SERVICE_STARTUP_FAILED] [error: http://172.17.0.1:32774 does not respond in 10s]

The most interesting thing is that it has worked well for some fixed period of time. But now it doesn't.

Any ideas about the root cause?

Chrome container don't deleted if test was failed

log in container selenoid/chrome:latest

[305.992][SEVERE]: Timed out receiving message from renderer: 299.331
[305.993][INFO]: Timed out. Stopping navigation...
[305.993][DEBUG]: DEVTOOLS COMMAND Runtime.evaluate (id=31) {
   "expression": "window.stop();",
   "returnByValue": true
}
[305.997][DEBUG]: DEVTOOLS EVENT Page.frameStoppedLoading {
   "frameId": "104.1"
}
[305.997][DEBUG]: DEVTOOLS RESPONSE Runtime.evaluate (id=31) {
   "result": {
      "type": "undefined"
   }
}
[305.997][DEBUG]: DEVTOOLS COMMAND Runtime.evaluate (id=32) {
   "expression": "1"
}
[305.997][SEVERE]: Timed out receiving message from renderer: -0.006
[305.998][INFO]: Done waiting for pending navigations. Status: timeout: cannot determine loading status
from timeout: Timed out receiving message from renderer: -0.006
[305.998][INFO]: RESPONSE Navigate timeout: cannot determine loading status
from timeout: Timed out receiving message from renderer: -0.006
  (Session info: chrome=56.0.2924.87)

my file browser.json:

{
  "firefox": {
    "default": "latest",
    "versions": {
      "latest": {
        "image": "selenoid/firefox:latest",
        "port": "4444"
      }
    }
  },
  "chrome": {
    "default": "latest",
    "versions": {
      "latest": {
        "image": "selenoid/chrome:latest",
        "port": "4444"
      }
    }
  }
}

2f21c1fae754 - faild container
Lines from log in aandryashin/selenoid:latest which consist text "2f21c1fae754":

2017/04/10 08:26:17 [CONTAINER_STARTED]
[2f21c1fae754985be1d061e5fb05a3033e8cb0508df4ee4241783962d01e3c49] [458.85045ms]
2017/04/10 08:26:18 [SERVICE_STARTED] [2f21c1fae754985be1d061e5fb05a3033e8cb0508df4ee4241783962d01e3c49] [665.877333ms]

and dont exist [CONTAINER_REMOVED]

screenResolution example

There is no clear understanding how to pass screenResolution: 1280x1024x24 value. Should I pass them via desired capabilities or put them in config.json file. The same with enableVNC

IE does not close session on timeout

Start new session:

PS C:\Users\Administrator> curl -Method Post -Body '{"desiredCapabilities":{"browserName":"internet explorer"}}' http://
localhost:4444/wd/hub/session

StatusCode : 200
StatusDescription : OK
Content : {"sessionId":"4d4b7e58-4669-427b-a0d6-7640a55dfe9b","status":0,"value":{"browserAttachTimeout":0,"b
rowserName":"internet
explorer","elementScrollBehavior":0,"enableElementCacheCleanup":true,"enablePer...
RawContent : HTTP/1.1 200 OK
Content-Length: 701
Content-Type: text/plain; charset=utf-8
Date: Wed, 16 Nov 2016 05:52:31 GMT

                {"sessionId":"4d4b7e58-4669-427b-a0d6-7640a55dfe9b","status":0,"value":{"browserAt...

Forms : {}
Headers : {[Content-Length, 701], [Content-Type, text/plain; charset=utf-8], [Date, Wed, 16 Nov 2016
05:52:31 GMT]}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : System.__ComObject
RawContentLength : 701

Wait when session timeout occurs:

2016/11/16 05:52:05 Process 3784 terminated
2016/11/16 05:52:31 [NEW_REQUEST]
2016/11/16 05:52:31 [NEW_REQUEST_ACCEPTED]
2016/11/16 05:52:31 Locating the service for internet explorer
2016/11/16 05:52:31 Using default version: latest
2016/11/16 05:52:31 Using driver service for internet explorer latest
2016/11/16 05:52:31 Trying to allocate port
2016/11/16 05:52:31 Available port is: 50336
2016/11/16 05:52:31 Starting process: [IEDriverServer --port=50336]
2016/11/16 05:52:31 Process 3088 started in: 57.0233ms
2016/11/16 05:52:31 Proxying requests to: http://127.0.0.1:50336
2016/11/16 05:52:31 [SESSION_ATTEMPTED] [http://127.0.0.1:50336]
2016/11/16 05:52:31 [SESSION_CREATED] [4d4b7e58-4669-427b-a0d6-7640a55dfe9b] [http://127.0.0.1:50336]
2016/11/16 05:53:31 [SESSION_TIMED_OUT] [4d4b7e58-4669-427b-a0d6-7640a55dfe9b] - Deleting session
2016/11/16 05:53:31 [DELETE_FAILED]
2016/11/16 05:53:31 Terminating process 3088
2016/11/16 05:53:31 Process 3088 terminated
2016/11/16 05:53:31 [FORCED_SESSION_REMOVAL] [4d4b7e58-4669-427b-a0d6-7640a55dfe9b]

When proxying to localhost to delete session get this error:

http: proxy error: dial tcp [::]:4444: connectex: The requested address is not valid in its context.

How to upload files with current browsers?

With docker service of browsers, it really eliminate a lot of processes issues. But how to upload files with browser? I don't know where to put my local files. How to map volumes in browser docker service?

Add ability to proxy VNC port

Should be able to proxy vnc port by session ID like the following:

/vnc/<uuid>

The request like this...

GET /vnc

... should return a list of currently available videos.

Remove volume after tmpfs

After each container with browser there is a dangling volume. It remains on the local disk and reduces free space.

Use docker rm option:

Name, shorthand Default Description
--volumes, -v false Remove the volumes associated with the container

here service/docker.go#L103

Verify that working with external Docker API works

# docker run -d --name selenoid -p 4444:4444 -v /etc/selenoid:/etc/selenoid:ro -e DOCKER_HOST=tcp://example.com:4243 aandryashin/selenoid:1.1.0

Selenoid should work with Docker API example.com:4243.

Starting Geckodriver fails

2017/03/14 20:48:37 Starting process: [/usr/local/lib/node_modules/selenium-standalone/.selenium/geckodriver/0.15.0-x64-geckodriver --log-level=DEBUG --port=59269]
2017/03/14 20:48:47 Terminating process 3046
2017/03/14 20:48:47 Process 3046 terminated
2017/03/14 20:48:47 [SERVICE_STARTUP_FAILED] [error: http://127.0.0.1:59269 does not respond in 10s]

browserconfig:

{
  "firefox": {
    "default": "latest",
    "versions": {
      "latest": {
        "image": ["/usr/local/geckodriver/0.12.0-x64-geckodriver", "--log-level=DEBUG"],
        "port": "4444"
      }
    }
  },
  "chrome": {
    "default": "latest",
    "versions": {
      "latest": {
        "image": ["/usr/local/chromedriver/2.28-x64-chromedriver", "--log-level=DEBUG"],
        "port": "4444"
      }
    }
  }
}

BTW Chrome works great

Starting IEdriver does not work

This is my browsers.json:

admin@selenium-pc ~
$ cat ./browsers.json
{
  "internet explorer": {
    "default": "10",
    "versions": {
      "10": {
        "image": ["C:\\cygwin\\lib\\selenium\\iedriver.exe", "--log-level=DEBUG"]
      }
    }
  }
}

Here are Selenoid logs:

admin@selenium-pc ~
$ ./selenoid.exe -conf ./browsers.json -disable-docker
2016/11/15 14:49:03 Listening on :4444
2016/11/15 14:55:36 [NEW_REQUEST]
2016/11/15 14:55:36 [NEW_REQUEST_ACCEPTED]
2016/11/15 14:55:36 Locating the service for internet explorer 10
2016/11/15 14:55:36 Using driver service for internet explorer 10
2016/11/15 14:55:36 Trying to allocate port
2016/11/15 14:55:36 Available port is: 62884
2016/11/15 14:55:36 Starting process: [C:\cygwin\lib\selenium\iedriver.exe --log-level=DEBUG --port=62884]
2016/11/15 14:55:36 Process 3728 started in: 52.7343ms
2016/11/15 14:55:36 Proxying requests to: http://127.0.0.1:62884
2016/11/15 14:55:36 [SESSION_ATTEMPTED] [http://127.0.0.1:62884] <==== Freezes at this line!

But the process gets created and works:

admin@selenium-pc ~
$ curl -s -I http://127.0.0.1:62884
HTTP/1.1 200 OK
Content-Length: 136
Content-Type: text/html; charset=UTF-8
Vary: Accept-Charset, Accept-Encoding, Accept-Language, Accept
Accept-Ranges: bytes
Connection: close


admin@selenium-pc ~
$ ps -W | grep iedriver
     3728       0       0       3728  ?          0 15:55:37 C:\cygwin\lib\selenium\iedriver.exe

I think there's either an issue with blocking on channels or some Windows proxying particularity.

Proxy container logs

By default containers output logs to stdout. It would be great to access currently running container logs via url: /logs/<session_id>. This will allow to show logs in face and proxy running session logs via ggr.

Selenoid did not delete running containers when exits with panic

I use GGR 1.1.3 and Selenoid 1.1.1
And periodically Selenoid stops with this error:

panic: send on closed channel

goroutine 426219 [running]:
github.com/aerokube/selenoid/service.wait.func1(0xc4201df940, 0x16, 0xc42041b080)
	/home/travis/gopath/src/github.com/aerokube/selenoid/service/service.go:62 +0x115
created by github.com/aerokube/selenoid/service.wait
	/home/travis/gopath/src/github.com/aerokube/selenoid/service/service.go:68 +0x8c

After this Selenoid stops and left all containers with browsers as is.
As i understand, this could happen because of network issues.

Expected behavior:

  • Selenoid delete all browser containers after it exits with error.

If you need some more information, please ask.
I will try to provide as much information as needed.

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.