@@ -6,6 +6,7 @@ $LOAD_PATH.unshift File.expand_path('.')
66require 'base64'
77require 'json'
88require 'rake'
9+ require 'rbconfig'
910require 'net/http'
1011require 'net/telnet'
1112require 'stringio'
@@ -20,23 +21,8 @@ orig_verbose = verbose
2021verbose ( false )
2122
2223# Location of all new (non-CrazyFun) methods
23- require 'rake_tasks/selenium_rake/browsers'
24- require 'rake_tasks/selenium_rake/checks'
25- require 'rake_tasks/selenium_rake/cpp_formatter'
26- require 'rake_tasks/selenium_rake/ie_generator'
27- require 'rake_tasks/selenium_rake/java_formatter'
28- require 'rake_tasks/selenium_rake/type_definitions_generator'
29-
30- # Our modifications to the Rake / Bazel libraries
3124require 'rake/task'
32- require 'rake_tasks/rake/task'
33- require 'rake_tasks/rake/dsl'
34- require 'rake_tasks/bazel/task'
35-
36- # These are the final items mixed into the global NS
37- # These need moving into correct namespaces, and not be globally included
3825require 'rake_tasks/bazel'
39- require 'rake_tasks/python'
4026
4127$DEBUG = orig_verbose != Rake ::FileUtilsExt ::DEFAULT
4228$DEBUG = true if ENV [ 'debug' ] == 'true'
5238
5339# If it looks like a bazel target, build it with bazel
5440rule ( %r{//.*} ) do |task |
55- task . out = Bazel . execute ( 'build' , %w[ ] , task . name )
41+ Bazel . execute ( 'build' , %w[ ] , task . name )
5642end
5743
58- # Spoof tasks to get CI working with bazel
59- task '//java/test/org/openqa/selenium/environment/webserver:webserver:uber' => [
60- '//java/test/org/openqa/selenium/environment:webserver'
61- ]
62-
6344# use #java_release_targets to access this list
6445JAVA_RELEASE_TARGETS = %w[
6546 //java/src/org/openqa/selenium/chrome:chrome.publish
@@ -139,163 +120,7 @@ task :update_manager do |_task, _arguments|
139120 @git . add ( 'common/selenium_manager.bzl' )
140121end
141122
142- # Ruby and Rust are automatically updated as part of version bumps in a separate step
143- desc 'Update dependencies for the release'
144- task :release_update do |_task , _arguments |
145- Rake ::Task [ :update_multitool ] . invoke
146- Rake ::Task [ 'java:update' ] . invoke
147- Rake ::Task [ 'node:update' ] . invoke
148- end
149-
150- desc 'Update multitool binaries to latest releases'
151- task :update_multitool do |_task , _arguments |
152- puts 'Updating multitool binary versions'
153- Bazel . execute ( 'run' , [ ] , '//scripts:update_multitool_binaries' )
154- @git . add ( 'multitool.lock.json' )
155- end
156-
157- task all : [
158- :'selenium-java' ,
159- '//java/test/org/openqa/selenium/environment:webserver'
160- ]
161-
162- task tests : [
163- '//java/test/org/openqa/selenium/htmlunit:htmlunit' ,
164- '//java/test/org/openqa/selenium/firefox:test-synthesized' ,
165- '//java/test/org/openqa/selenium/ie:ie' ,
166- '//java/test/org/openqa/selenium/chrome:chrome' ,
167- '//java/test/org/openqa/selenium/edge:edge' ,
168- '//java/test/org/openqa/selenium/support:small-tests' ,
169- '//java/test/org/openqa/selenium/support:large-tests' ,
170- '//java/test/org/openqa/selenium/remote:small-tests' ,
171- '//java/test/org/openqa/selenium/remote/server/log:test' ,
172- '//java/test/org/openqa/selenium/remote/server:small-tests'
173- ]
174- task chrome : [ '//java/src/org/openqa/selenium/chrome' ]
175- task grid : [ :'selenium-server-standalone' ]
176- task ie : [ '//java/src/org/openqa/selenium/ie' ]
177- task firefox : [ '//java/src/org/openqa/selenium/firefox' ]
178- task remote : %i[ remote_server remote_client ]
179- task remote_client : [ '//java/src/org/openqa/selenium/remote' ]
180- task remote_server : [ '//java/src/org/openqa/selenium/remote/server' ]
181- task safari : [ '//java/src/org/openqa/selenium/safari' ]
182- task selenium : [ '//java/src/org/openqa/selenium:core' ]
183- task support : [ '//java/src/org/openqa/selenium/support' ]
184-
185- desc 'Build the standalone server'
186- task 'selenium-server-standalone' => '//java/src/org/openqa/selenium/grid:executable-grid'
187-
188- task test_javascript : [
189- '//javascript/atoms:test-chrome:run' ,
190- '//javascript/webdriver:test-chrome:run' ,
191- '//javascript/selenium-atoms:test-chrome:run' ,
192- '//javascript/selenium-core:test-chrome:run'
193- ]
194- task test_chrome : [ '//java/test/org/openqa/selenium/chrome:chrome:run' ]
195- task test_edge : [ '//java/test/org/openqa/selenium/edge:edge:run' ]
196- task test_chrome_atoms : [
197- '//javascript/atoms:test-chrome:run' ,
198- '//javascript/chrome-driver:test-chrome:run' ,
199- '//javascript/webdriver:test-chrome:run'
200- ]
201- task test_htmlunit : [
202- '//java/test/org/openqa/selenium/htmlunit:htmlunit:run'
203- ]
204- task test_grid : [
205- '//java/test/org/openqa/grid/common:common:run' ,
206- '//java/test/org/openqa/grid:grid:run' ,
207- '//java/test/org/openqa/grid/e2e:e2e:run' ,
208- '//java/test/org/openqa/selenium/remote:remote-driver-grid-tests:run'
209- ]
210- task test_ie : [
211- '//cpp/iedriverserver:win32' ,
212- '//cpp/iedriverserver:x64' ,
213- '//java/test/org/openqa/selenium/ie:ie:run'
214- ]
215- task test_jobbie : [ :test_ie ]
216- task test_firefox : [ '//java/test/org/openqa/selenium/firefox:marionette:run' ]
217- task test_remote_server : [
218- '//java/test/org/openqa/selenium/remote/server:small-tests:run' ,
219- '//java/test/org/openqa/selenium/remote/server/log:test:run'
220- ]
221- task test_remote : [
222- '//java/test/org/openqa/selenium/json:small-tests:run' ,
223- '//java/test/org/openqa/selenium/remote:common-tests:run' ,
224- '//java/test/org/openqa/selenium/remote:client-tests:run' ,
225- '//java/test/org/openqa/selenium/remote:remote-driver-tests:run' ,
226- :test_remote_server
227- ]
228- task test_safari : [ '//java/test/org/openqa/selenium/safari:safari:run' ]
229- task test_support : [
230- '//java/test/org/openqa/selenium/support:small-tests:run' ,
231- '//java/test/org/openqa/selenium/support:large-tests:run'
232- ]
233-
234- task :test_java_webdriver do
235- if SeleniumRake ::Checks . windows?
236- Rake ::Task [ 'test_ie' ] . invoke
237- elsif SeleniumRake ::Checks . chrome?
238- Rake ::Task [ 'test_chrome' ] . invoke
239- elsif SeleniumRake ::Checks . edge?
240- Rake ::Task [ 'test_edge' ] . invoke
241- else
242- Rake ::Task [ 'test_htmlunit' ] . invoke
243- Rake ::Task [ 'test_firefox' ] . invoke
244- Rake ::Task [ 'test_remote_server' ] . invoke
245- end
246- end
247-
248- task test_java : [
249- '//java/test/org/openqa/selenium/atoms:test:run' ,
250- :test_java_small_tests ,
251- :test_support ,
252- :test_java_webdriver ,
253- :test_selenium ,
254- 'test_grid'
255- ]
256-
257- task test_java_small_tests : [
258- '//java/test/org/openqa/selenium:small-tests:run' ,
259- '//java/test/org/openqa/selenium/json:small-tests:run' ,
260- '//java/test/org/openqa/selenium/support:small-tests:run' ,
261- '//java/test/org/openqa/selenium/remote:common-tests:run' ,
262- '//java/test/org/openqa/selenium/remote:client-tests:run' ,
263- '//java/test/org/openqa/grid/selenium/node:node:run' ,
264- '//java/test/org/openqa/grid/selenium/proxy:proxy:run' ,
265- '//java/test/org/openqa/selenium/remote/server:small-tests:run' ,
266- '//java/test/org/openqa/selenium/remote/server/log:test:run'
267- ]
268-
269- task :test do
270- if SeleniumRake ::Checks . python?
271- Rake ::Task [ 'test_py' ] . invoke
272- else
273- Rake ::Task [ 'test_javascript' ] . invoke
274- Rake ::Task [ 'test_java' ] . invoke
275- end
276- end
277-
278- task test_py : [ :py_prep_for_install_release , 'py:marionette_test' ]
279- task build : %i[ all firefox remote selenium tests ]
280-
281- desc 'Clean build artifacts.'
282- task :clean do
283- rm_rf 'build/'
284- rm_rf 'java/build/'
285- rm_rf 'dist/'
286- end
287-
288- # Create a new IEGenerator instance
289- ie_generator = SeleniumRake ::IEGenerator . new
290-
291- # Generate a C++ Header file for mapping between magic numbers and #defines
292- # in the C++ code.
293- ie_generator . generate_type_mapping (
294- name : 'ie_result_type_cpp' ,
295- src : 'cpp/iedriver/result_types.txt' ,
296- type : 'cpp' ,
297- out : 'cpp/iedriver/IEReturnTypes.h'
298- )
123+ task grid : [ 'java:grid' ]
299124
300125desc 'Generate Javadocs'
301126task javadocs : %i[ //java/src/org/openqa/selenium/grid:all-javadocs ] do
@@ -304,7 +129,8 @@ task javadocs: %i[//java/src/org/openqa/selenium/grid:all-javadocs] do
304129 out = 'bazel-bin/java/src/org/openqa/selenium/grid/all-javadocs.jar'
305130
306131 cmd = %(cd build/docs/api/java && jar xf "../../../../#{ out } " 2>&1)
307- cmd = cmd . tr ( '/' , '\\' ) . tr ( ':' , ';' ) if SeleniumRake ::Checks . windows?
132+ windows = RbConfig ::CONFIG [ 'host_os' ] =~ /mswin|msys|mingw32/
133+ cmd = cmd . tr ( '/' , '\\' ) . tr ( ':' , ';' ) if windows
308134 raise 'could not unpack javadocs' unless system ( cmd )
309135
310136 File . open ( 'build/docs/api/java/stylesheet.css' , 'a' ) do |file |
@@ -325,11 +151,19 @@ task javadocs: %i[//java/src/org/openqa/selenium/grid:all-javadocs] do
325151 end
326152end
327153
328- file 'cpp/iedriver/sizzle.h' => [ '//third_party/js/sizzle:sizzle:header' ] do
329- cp 'build/third_party/js/sizzle/sizzle.h' , 'cpp/iedriver/sizzle.h'
154+ desc 'Update dependencies for the release'
155+ task :release_update do |_task , _arguments |
156+ Rake ::Task [ :update_multitool ] . invoke
157+ Rake ::Task [ 'java:update' ] . invoke
158+ Rake ::Task [ 'node:update' ] . invoke
330159end
331160
332- task sizzle_header : [ 'cpp/iedriver/sizzle.h' ]
161+ desc 'Update multitool binaries to latest releases'
162+ task :update_multitool do |_task , _arguments |
163+ puts 'Updating multitool binary versions'
164+ Bazel . execute ( 'run' , [ ] , '//scripts:update_multitool_binaries' )
165+ @git . add ( 'multitool.lock.json' )
166+ end
333167
334168task ios_driver : [
335169 '//javascript/atoms/fragments:get_visible_text:ios' ,
@@ -513,56 +347,12 @@ task :authors do
513347 @git . add ( 'AUTHORS' )
514348end
515349
516- namespace :side do
517- task atoms : [
518- '//javascript/atoms/fragments:find-element'
519- ] do
520- # TODO: move directly to IDE's directory once the repositories are merged
521- mkdir_p 'build/javascript/atoms'
522-
523- atom = 'bazel-bin/javascript/atoms/fragments/find-element.js'
524- name = File . basename ( atom )
525-
526- puts "Generating #{ atom } as #{ name } "
527- File . open ( File . join ( baseDir , name ) , 'w' ) do |f |
528- f << "// GENERATED CODE - DO NOT EDIT\n "
529- f << 'module.exports = '
530- f << File . read ( atom ) . strip
531- f << ";\n "
532- end
533- end
534- end
535-
536350def node_version
537351 File . foreach ( 'javascript/selenium-webdriver/package.json' ) do |line |
538352 return line . split ( ':' ) . last . strip . tr ( '",' , '' ) if line . include? ( 'version' )
539353 end
540354end
541355namespace :node do
542- atom_list = %w[
543- //javascript/atoms/fragments:find-elements
544- //javascript/atoms/fragments:is-displayed
545- //javascript/webdriver/atoms:get-attribute
546- ]
547-
548- task atoms : atom_list do
549- base_dir = 'javascript/selenium-webdriver/lib/atoms'
550- mkdir_p base_dir
551-
552- [ 'bazel-bin/javascript/atoms/fragments/is-displayed.js' ,
553- 'bazel-bin/javascript/webdriver/atoms/get-attribute.js' ,
554- 'bazel-bin/javascript/atoms/fragments/find-elements.js' ] . each do |atom |
555- name = File . basename ( atom )
556- puts "Generating #{ atom } as #{ name } "
557- File . open ( File . join ( base_dir , name ) , 'w' ) do |f |
558- f << "// GENERATED CODE - DO NOT EDIT\n "
559- f << 'module.exports = '
560- f << File . read ( atom ) . strip
561- f << ";\n "
562- end
563- end
564- end
565-
566356 desc 'Build Node npm package'
567357 task :build do |_task , arguments |
568358 args = arguments . to_a . compact
@@ -830,25 +620,6 @@ namespace :rb do
830620 Bazel . execute ( 'build' , args , '//rb:selenium-devtools' ) if devtools || !webdriver
831621 end
832622
833- task :atoms do
834- base_dir = 'rb/lib/selenium/webdriver/atoms'
835- mkdir_p base_dir
836-
837- {
838- '//javascript/atoms/fragments:find-elements' : 'findElements.js' ,
839- '//javascript/atoms/fragments:is-displayed' : 'isDisplayed.js' ,
840- '//javascript/webdriver/atoms:get-attribute' : 'getAttribute.js'
841- } . each do |target , name |
842- puts "Generating #{ target } as #{ name } "
843-
844- atom = Bazel . execute ( 'build' , [ ] , target . to_s )
845-
846- File . open ( File . join ( base_dir , name ) , 'w' ) do |f |
847- f << File . read ( atom ) . strip
848- end
849- end
850- end
851-
852623 desc 'Update generated Ruby files for local development'
853624 task :local_dev do
854625 puts 'installing ruby, this may take a minute'
@@ -1522,12 +1293,6 @@ namespace :all do
15221293 end
15231294end
15241295
1525- at_exit do
1526- system 'sh' , '.git-fixfiles' if File . exist? ( '.git' ) && SeleniumRake ::Checks . linux?
1527- rescue StandardError => e
1528- puts "Do not exit execution when this errors... #{ e . inspect } "
1529- end
1530-
15311296def updated_version ( current , desired = nil , nightly = nil )
15321297 if !desired . nil? && desired != 'nightly'
15331298 # If desired is present, return full 3 digit version
0 commit comments