Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .git-fixfiles

This file was deleted.

266 changes: 15 additions & 251 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ $LOAD_PATH.unshift File.expand_path('.')
require 'base64'
require 'json'
require 'rake'
require 'rbconfig'
require 'net/http'
require 'net/telnet'
require 'stringio'
Expand All @@ -20,23 +21,8 @@ orig_verbose = verbose
verbose(false)

# Location of all new (non-CrazyFun) methods
require 'rake_tasks/selenium_rake/browsers'
require 'rake_tasks/selenium_rake/checks'
require 'rake_tasks/selenium_rake/cpp_formatter'
require 'rake_tasks/selenium_rake/ie_generator'
require 'rake_tasks/selenium_rake/java_formatter'
require 'rake_tasks/selenium_rake/type_definitions_generator'

# Our modifications to the Rake / Bazel libraries
require 'rake/task'
require 'rake_tasks/rake/task'
require 'rake_tasks/rake/dsl'
require 'rake_tasks/bazel/task'

# These are the final items mixed into the global NS
# These need moving into correct namespaces, and not be globally included
require 'rake_tasks/bazel'
require 'rake_tasks/python'

$DEBUG = orig_verbose != Rake::FileUtilsExt::DEFAULT
$DEBUG = true if ENV['debug'] == 'true'
Expand All @@ -52,14 +38,9 @@ end

# If it looks like a bazel target, build it with bazel
rule(%r{//.*}) do |task|
task.out = Bazel.execute('build', %w[], task.name)
Bazel.execute('build', %w[], task.name)
end

# Spoof tasks to get CI working with bazel
task '//java/test/org/openqa/selenium/environment/webserver:webserver:uber' => [
'//java/test/org/openqa/selenium/environment:webserver'
]

# use #java_release_targets to access this list
JAVA_RELEASE_TARGETS = %w[
//java/src/org/openqa/selenium/chrome:chrome.publish
Expand Down Expand Up @@ -139,163 +120,7 @@ task :update_manager do |_task, _arguments|
@git.add('common/selenium_manager.bzl')
end

# Ruby and Rust are automatically updated as part of version bumps in a separate step
desc 'Update dependencies for the release'
task :release_update do |_task, _arguments|
Rake::Task[:update_multitool].invoke
Rake::Task['java:update'].invoke
Rake::Task['node:update'].invoke
end

desc 'Update multitool binaries to latest releases'
task :update_multitool do |_task, _arguments|
puts 'Updating multitool binary versions'
Bazel.execute('run', [], '//scripts:update_multitool_binaries')
@git.add('multitool.lock.json')
end

task all: [
:'selenium-java',
'//java/test/org/openqa/selenium/environment:webserver'
]

task tests: [
'//java/test/org/openqa/selenium/htmlunit:htmlunit',
'//java/test/org/openqa/selenium/firefox:test-synthesized',
'//java/test/org/openqa/selenium/ie:ie',
'//java/test/org/openqa/selenium/chrome:chrome',
'//java/test/org/openqa/selenium/edge:edge',
'//java/test/org/openqa/selenium/support:small-tests',
'//java/test/org/openqa/selenium/support:large-tests',
'//java/test/org/openqa/selenium/remote:small-tests',
'//java/test/org/openqa/selenium/remote/server/log:test',
'//java/test/org/openqa/selenium/remote/server:small-tests'
]
task chrome: ['//java/src/org/openqa/selenium/chrome']
task grid: [:'selenium-server-standalone']
task ie: ['//java/src/org/openqa/selenium/ie']
task firefox: ['//java/src/org/openqa/selenium/firefox']
task remote: %i[remote_server remote_client]
task remote_client: ['//java/src/org/openqa/selenium/remote']
task remote_server: ['//java/src/org/openqa/selenium/remote/server']
task safari: ['//java/src/org/openqa/selenium/safari']
task selenium: ['//java/src/org/openqa/selenium:core']
task support: ['//java/src/org/openqa/selenium/support']

desc 'Build the standalone server'
task 'selenium-server-standalone' => '//java/src/org/openqa/selenium/grid:executable-grid'

task test_javascript: [
'//javascript/atoms:test-chrome:run',
'//javascript/webdriver:test-chrome:run',
'//javascript/selenium-atoms:test-chrome:run',
'//javascript/selenium-core:test-chrome:run'
]
task test_chrome: ['//java/test/org/openqa/selenium/chrome:chrome:run']
task test_edge: ['//java/test/org/openqa/selenium/edge:edge:run']
task test_chrome_atoms: [
'//javascript/atoms:test-chrome:run',
'//javascript/chrome-driver:test-chrome:run',
'//javascript/webdriver:test-chrome:run'
]
task test_htmlunit: [
'//java/test/org/openqa/selenium/htmlunit:htmlunit:run'
]
task test_grid: [
'//java/test/org/openqa/grid/common:common:run',
'//java/test/org/openqa/grid:grid:run',
'//java/test/org/openqa/grid/e2e:e2e:run',
'//java/test/org/openqa/selenium/remote:remote-driver-grid-tests:run'
]
task test_ie: [
'//cpp/iedriverserver:win32',
'//cpp/iedriverserver:x64',
'//java/test/org/openqa/selenium/ie:ie:run'
]
task test_jobbie: [:test_ie]
task test_firefox: ['//java/test/org/openqa/selenium/firefox:marionette:run']
task test_remote_server: [
'//java/test/org/openqa/selenium/remote/server:small-tests:run',
'//java/test/org/openqa/selenium/remote/server/log:test:run'
]
task test_remote: [
'//java/test/org/openqa/selenium/json:small-tests:run',
'//java/test/org/openqa/selenium/remote:common-tests:run',
'//java/test/org/openqa/selenium/remote:client-tests:run',
'//java/test/org/openqa/selenium/remote:remote-driver-tests:run',
:test_remote_server
]
task test_safari: ['//java/test/org/openqa/selenium/safari:safari:run']
task test_support: [
'//java/test/org/openqa/selenium/support:small-tests:run',
'//java/test/org/openqa/selenium/support:large-tests:run'
]

task :test_java_webdriver do
if SeleniumRake::Checks.windows?
Rake::Task['test_ie'].invoke
elsif SeleniumRake::Checks.chrome?
Rake::Task['test_chrome'].invoke
elsif SeleniumRake::Checks.edge?
Rake::Task['test_edge'].invoke
else
Rake::Task['test_htmlunit'].invoke
Rake::Task['test_firefox'].invoke
Rake::Task['test_remote_server'].invoke
end
end

task test_java: [
'//java/test/org/openqa/selenium/atoms:test:run',
:test_java_small_tests,
:test_support,
:test_java_webdriver,
:test_selenium,
'test_grid'
]

task test_java_small_tests: [
'//java/test/org/openqa/selenium:small-tests:run',
'//java/test/org/openqa/selenium/json:small-tests:run',
'//java/test/org/openqa/selenium/support:small-tests:run',
'//java/test/org/openqa/selenium/remote:common-tests:run',
'//java/test/org/openqa/selenium/remote:client-tests:run',
'//java/test/org/openqa/grid/selenium/node:node:run',
'//java/test/org/openqa/grid/selenium/proxy:proxy:run',
'//java/test/org/openqa/selenium/remote/server:small-tests:run',
'//java/test/org/openqa/selenium/remote/server/log:test:run'
]

task :test do
if SeleniumRake::Checks.python?
Rake::Task['test_py'].invoke
else
Rake::Task['test_javascript'].invoke
Rake::Task['test_java'].invoke
end
end

task test_py: [:py_prep_for_install_release, 'py:marionette_test']
task build: %i[all firefox remote selenium tests]

desc 'Clean build artifacts.'
task :clean do
rm_rf 'build/'
rm_rf 'java/build/'
rm_rf 'dist/'
end

# Create a new IEGenerator instance
ie_generator = SeleniumRake::IEGenerator.new

# Generate a C++ Header file for mapping between magic numbers and #defines
# in the C++ code.
ie_generator.generate_type_mapping(
name: 'ie_result_type_cpp',
src: 'cpp/iedriver/result_types.txt',
type: 'cpp',
out: 'cpp/iedriver/IEReturnTypes.h'
)
task grid: ['java:grid']

desc 'Generate Javadocs'
task javadocs: %i[//java/src/org/openqa/selenium/grid:all-javadocs] do
Expand All @@ -304,7 +129,8 @@ task javadocs: %i[//java/src/org/openqa/selenium/grid:all-javadocs] do
out = 'bazel-bin/java/src/org/openqa/selenium/grid/all-javadocs.jar'

cmd = %(cd build/docs/api/java && jar xf "../../../../#{out}" 2>&1)
cmd = cmd.tr('/', '\\').tr(':', ';') if SeleniumRake::Checks.windows?
windows = RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
cmd = cmd.tr('/', '\\').tr(':', ';') if windows
raise 'could not unpack javadocs' unless system(cmd)

File.open('build/docs/api/java/stylesheet.css', 'a') do |file|
Expand All @@ -325,11 +151,18 @@ task javadocs: %i[//java/src/org/openqa/selenium/grid:all-javadocs] do
end
end

file 'cpp/iedriver/sizzle.h' => ['//third_party/js/sizzle:sizzle:header'] do
cp 'build/third_party/js/sizzle/sizzle.h', 'cpp/iedriver/sizzle.h'
task :release_update do |_task, _arguments|
Rake::Task[:update_multitool].invoke
Rake::Task['java:update'].invoke
Rake::Task['node:update'].invoke
end

task sizzle_header: ['cpp/iedriver/sizzle.h']
desc 'Update multitool binaries to latest releases'
task :update_multitool do |_task, _arguments|
puts 'Updating multitool binary versions'
Bazel.execute('run', [], '//scripts:update_multitool_binaries')
@git.add('multitool.lock.json')
end

task ios_driver: [
'//javascript/atoms/fragments:get_visible_text:ios',
Expand Down Expand Up @@ -513,56 +346,12 @@ task :authors do
@git.add('AUTHORS')
end

namespace :side do
task atoms: [
'//javascript/atoms/fragments:find-element'
] do
# TODO: move directly to IDE's directory once the repositories are merged
mkdir_p 'build/javascript/atoms'

atom = 'bazel-bin/javascript/atoms/fragments/find-element.js'
name = File.basename(atom)

puts "Generating #{atom} as #{name}"
File.open(File.join(baseDir, name), 'w') do |f|
f << "// GENERATED CODE - DO NOT EDIT\n"
f << 'module.exports = '
f << File.read(atom).strip
f << ";\n"
end
end
end

def node_version
File.foreach('javascript/selenium-webdriver/package.json') do |line|
return line.split(':').last.strip.tr('",', '') if line.include?('version')
end
end
namespace :node do
atom_list = %w[
//javascript/atoms/fragments:find-elements
//javascript/atoms/fragments:is-displayed
//javascript/webdriver/atoms:get-attribute
]

task atoms: atom_list do
base_dir = 'javascript/selenium-webdriver/lib/atoms'
mkdir_p base_dir

['bazel-bin/javascript/atoms/fragments/is-displayed.js',
'bazel-bin/javascript/webdriver/atoms/get-attribute.js',
'bazel-bin/javascript/atoms/fragments/find-elements.js'].each do |atom|
name = File.basename(atom)
puts "Generating #{atom} as #{name}"
File.open(File.join(base_dir, name), 'w') do |f|
f << "// GENERATED CODE - DO NOT EDIT\n"
f << 'module.exports = '
f << File.read(atom).strip
f << ";\n"
end
end
end

desc 'Build Node npm package'
task :build do |_task, arguments|
args = arguments.to_a.compact
Expand Down Expand Up @@ -830,25 +619,6 @@ namespace :rb do
Bazel.execute('build', args, '//rb:selenium-devtools') if devtools || !webdriver
end

task :atoms do
base_dir = 'rb/lib/selenium/webdriver/atoms'
mkdir_p base_dir

{
'//javascript/atoms/fragments:find-elements': 'findElements.js',
'//javascript/atoms/fragments:is-displayed': 'isDisplayed.js',
'//javascript/webdriver/atoms:get-attribute': 'getAttribute.js'
}.each do |target, name|
puts "Generating #{target} as #{name}"

atom = Bazel.execute('build', [], target.to_s)

File.open(File.join(base_dir, name), 'w') do |f|
f << File.read(atom).strip
end
end
end

desc 'Update generated Ruby files for local development'
task :local_dev do
puts 'installing ruby, this may take a minute'
Expand Down Expand Up @@ -1522,12 +1292,6 @@ namespace :all do
end
end

at_exit do
system 'sh', '.git-fixfiles' if File.exist?('.git') && SeleniumRake::Checks.linux?
rescue StandardError => e
puts "Do not exit execution when this errors... #{e.inspect}"
end

def updated_version(current, desired = nil, nightly = nil)
if !desired.nil? && desired != 'nightly'
# If desired is present, return full 3 digit version
Expand Down
29 changes: 0 additions & 29 deletions cpp/iedriverserver/build.desc

This file was deleted.

8 changes: 6 additions & 2 deletions rake_tasks/bazel.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,14 @@
require 'English'
require 'open3'
require 'rake'
require 'rbconfig'
require 'io/wait'
require_relative 'selenium_rake/checks'

module Bazel
def self.windows?
(RbConfig::CONFIG['host_os'] =~ /mswin|msys|mingw32/) != nil
end

def self.execute(kind, args, target, &block)
verbose = Rake::FileUtilsExt.verbose_flag

Expand All @@ -19,7 +23,7 @@ def self.execute(kind, args, target, &block)
cmd_out = ''
cmd_exit_code = 0

if SeleniumRake::Checks.windows?
if windows?
cmd += ['2>&1']
cmd_line = cmd.join(' ')
cmd_out = `#{cmd_line}`.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
Expand Down
Loading
Loading