Commit 11e4364d authored by Jérome Perrin's avatar Jérome Perrin

selenium server

parent 6783166a
......@@ -19,4 +19,4 @@ md5sum = c4ac5de141ae6a64848309af03e51d88
[template-selenium]
filename = instance-selenium.cfg.in
md5sum = 7a96160536fd41b26d06faf655a11451
md5sum = 077df90cb0fdc6079b4ed81b326061aa
......@@ -7,17 +7,24 @@ eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true
[fontconfig-instance]
recipe = slapos.cookbook:fontconfig
conf-path = $${directory:etc}/font.conf
font-system-folder = ${fonts:location}
font-folder = $${directory:fonts}
service-folder = $${directory:services}
[xvfb-instance]
recipe = slapos.cookbook:wrapper
wrapper-path = $${basedirectory:services}/$${:_buildout_section_name_}
wrapper-path = $${directory:services}/$${:_buildout_section_name_}
command-line =
${xserver:location}/bin/Xvfb
$${:display}
-screen 0 1024x768x24
-fbdir $${basedirectory:framebuffer}
-fbdir $${directory:framebuffer}
environment=
TMPDIR=$${basedirectory:tmp}
TMPDIR=$${directory:tmp}
# We can safely use any $DISPLAY, because our slapos patched X11 isolate $DISPLAYs
# by placing sockets in $TMPDIR and using different $TMPDIR per partitions.
display = :0
......@@ -25,7 +32,7 @@ display = :0
[selenium-server-hub-instance]
recipe = slapos.cookbook:wrapper
wrapper-path = $${basedirectory:services}/$${:_buildout_section_name_}
wrapper-path = $${directory:services}/$${:_buildout_section_name_}
command-line =
${java-re-8:location}/bin/java
-jar ${selenium-server:target}
......@@ -49,7 +56,7 @@ port =
java-args =
recipe = slapos.cookbook:wrapper
wrapper-path = $${basedirectory:services}/$${:_buildout_section_name_}
wrapper-path = $${directory:services}/$${:_buildout_section_name_}
# TODO: option for maxSession ?
command-line =
${java-re-8:location}/bin/java $${:java-args}
......@@ -66,8 +73,9 @@ command-line =
# browsers and drivers are in buildout bin-directory, so we add it to $PATH
environment =
PATH=${buildout:bin-directory}
TMPDIR=$${basedirectory:tmp}
TMPDIR=$${directory:tmp}
DISPLAY=$${xvfb-instance:display}
FONTCONFIG_FILE=$${fontconfig-instance:conf-path}
hostname = $${instance-parameter:ipv4-random}
......@@ -89,37 +97,34 @@ capabilities = browserName=firefox,maxInstances=3,marionette=true,platform=LINUX
java-args = -Dwebdriver.gecko.driver=${geckodriver-0.21.0:location}
port = 7779
[selenium-server-node-instance-chromium-67]
[selenium-server-node-instance-chromium-68]
<= selenium-server-node-instance
capabilities = browserName=chrome,maxInstances=3,platform=LINUX,version=${chromium-67:version},chrome_binary=${chromium-wrapper-67:location}/chrome-slapos
java-args = -Dwebdriver.chrome.driver=${chromedriver-2.41:location}
capabilities = browserName=chrome,maxInstances=3,platform=LINUX,version=${chromium-68:version},chrome_binary=${chromium-wrapper-68:location}/chrome-slapos
java-args = -Dwebdriver.chrome.driver=${chromedriver-wrapper-2.41:location}
port = 7780
[promises]
recipe =
# XXX only enable 51 & 52. They work only one time. We configure maxInstances=3 so practically
# this server can serve 6 session. Then it will loop forever, with the hub logging:
# 09:44:46.820 DEBUG [ProxySet.getNewSession] - Available nodes: [http://127.0.1.1:7777, http://127.0.1.1:7778]
# 09:44:46.821 DEBUG [BaseRemoteProxy.getNewSession] - Trying to create a new session on node http://127.0.1.1:7777
# 09:44:46.821 DEBUG [BaseRemoteProxy.getNewSession] - Node http://127.0.1.1:7777 has no matching capability
# 09:44:46.821 DEBUG [BaseRemoteProxy.getNewSession] - Trying to create a new session on node http://127.0.1.1:7778
# XXX 60 does not work at all.
instance-promises =
$${selenium-server-hub-listen-promise:path}
$${selenium-server-node-firefox-51-listen-promise:path}
$${selenium-server-node-firefox-52-listen-promise:path}
$${selenium-server-node-instance-chromium-67-listen-promise:path}
#XXX firefox-60 does not work at all
$${selenium-server-node-instance-chromium-68-listen-promise:path}
# $${selenium-server-node-firefox-60-listen-promise:path}
# $${selenium-server-node-firefox-51-listen-promise:path}
# XXX firefox-60 does not work because of incompatibilities with our x11 TMPDIR patch.
# running firefox --marionette complains Gtk-WARNING **: cannot open display: :0
# running strace -f -s 100 TMPDIR=/same/tmpdir/as/xvfb/ firefox --marionette
# shows that some subprocesses are spawned with different TMPDIR.
##### connect(15, {sa_family=AF_UNIX, sun_path=@"/srv/slapgrid/slappart8/tmp/inst/TestRemoteDriver-0/tmp/Temp-0336e727-3485-4774-a816-75fda1baca12/.X11-unix"}, 113) = -1 EINVAL (Invalid argument)
##### write(2, "\n(/srv/slapgrid/slappart8/tmp/soft/c5be5b0096cd286c70df5156590cf4f6/parts/firefox-60/firefox:29812): Gtk-\33[1;33mWARNING\33[0m **: cannot open display: :0\n", 152) = 152
[check-port-listening-promise]
recipe = slapos.cookbook:check_port_listening
path = $${basedirectory:promises}/$${:_buildout_section_name_}
path = $${directory:promises}/$${:_buildout_section_name_}
[selenium-server-hub-listen-promise]
<= check-port-listening-promise
......@@ -141,10 +146,10 @@ port = $${selenium-server-node-instance-firefox-52:port}
hostname= $${selenium-server-node-instance-firefox-60:hostname}
port = $${selenium-server-node-instance-firefox-60:port}
[selenium-server-node-instance-chromium-67-listen-promise]
[selenium-server-node-instance-chromium-68-listen-promise]
<= check-port-listening-promise
hostname= $${selenium-server-node-instance-chromium-67:hostname}
port = $${selenium-server-node-instance-chromium-67:port}
hostname= $${selenium-server-node-instance-chromium-68:hostname}
port = $${selenium-server-node-instance-chromium-68:port}
[publish-connection-parameter]
......@@ -159,18 +164,15 @@ url = $${slap-connection:server-url}
key = $${slap-connection:key-file}
cert = $${slap-connection:cert-file}
[rootdirectory]
[directory]
recipe = slapos.cookbook:mkdirectory
etc = $${buildout:directory}/etc
var = $${buildout:directory}/var
srv = $${buildout:directory}/srv
bin = $${buildout:directory}/bin
[basedirectory]
recipe = slapos.cookbook:mkdirectory
services = $${rootdirectory:etc}/service
run = $${rootdirectory:var}/run
tmp = $${buildout:directory}/tmp
framebuffer = $${rootdirectory:srv}/framebuffer
promises = $${rootdirectory:etc}/promise
services = $${:etc}/service
promises = $${:etc}/promise
framebuffer = $${:srv}/framebuffer
fonts = $${:srv}/fonts/
# Selenium server
# https://seleniumhq.github.io/docs/grid.html
[buildout]
extends =
../../component/xorg/buildout.cfg
../../component/lxml-python/buildout.cfg
../../component/firefox/buildout.cfg
../../component/chromium/buildout.cfg
../../component/dash/buildout.cfg
../../component/java/buildout.cfg
../../stack/slapos.cfg
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment