Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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.

267 changes: 16 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|msys|mingw32/
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,19 @@ 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'
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

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 +347,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 +620,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 +1293,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.

Loading
Loading