testcentricity_web 4.1.9 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +96 -1
- data/README.md +88 -48
- data/lib/testcentricity_web/browser_helper.rb +2 -1
- data/lib/testcentricity_web/data_objects/environment.rb +0 -1
- data/lib/testcentricity_web/version.rb +1 -1
- data/lib/testcentricity_web/web_core/page_objects_helper.rb +40 -3
- data/lib/testcentricity_web/web_core/webdriver_helper.rb +89 -80
- data/lib/testcentricity_web/web_elements/media.rb +108 -0
- data/lib/testcentricity_web/web_elements/textfield.rb +28 -0
- data/lib/testcentricity_web/web_elements/ui_elements_helper.rb +39 -1
- metadata +37 -181
- data/.gitignore +0 -39
- data/.idea/.name +0 -1
- data/.idea/encodings.xml +0 -6
- data/.idea/misc.xml +0 -4
- data/.idea/modules.xml +0 -8
- data/.idea/vcs.xml +0 -7
- data/.rspec +0 -4
- data/.rubocop.yml +0 -38
- data/.ruby-version +0 -1
- data/.simplecov +0 -9
- data/CODE_OF_CONDUCT.md +0 -13
- data/Gemfile +0 -6
- data/Rakefile +0 -115
- data/config/cucumber.yml +0 -171
- data/config/locales/en-US.yml +0 -56
- data/config/test_data/LOCAL_data.json +0 -15
- data/config/test_data/LOCAL_data.xls +0 -0
- data/config/test_data/LOCAL_data.yml +0 -11
- data/config/test_data/data.json +0 -25
- data/config/test_data/data.xls +0 -0
- data/config/test_data/data.yml +0 -20
- data/docker-compose.yml +0 -48
- data/features/basic_form_page_css.feature +0 -54
- data/features/basic_form_page_xpath.feature +0 -26
- data/features/custom_controls.feature +0 -29
- data/features/media_players.feature +0 -67
- data/features/step_definitions/generic_steps.rb.rb +0 -124
- data/features/step_definitions/media_steps.rb +0 -30
- data/features/support/data/form_data.rb +0 -43
- data/features/support/env.rb +0 -51
- data/features/support/hooks.rb +0 -270
- data/features/support/pages/base_test_page.rb +0 -22
- data/features/support/pages/basic_css_form_page.rb +0 -53
- data/features/support/pages/basic_form_page.rb +0 -429
- data/features/support/pages/basic_xpath_form_page.rb +0 -54
- data/features/support/pages/custom_controls_page.rb +0 -263
- data/features/support/pages/indexed_sections_page.rb +0 -57
- data/features/support/pages/media_test_page.rb +0 -207
- data/features/support/sections/header_nav.rb +0 -48
- data/features/support/sections/product_card.rb +0 -39
- data/features/support/world_data.rb +0 -12
- data/features/support/world_pages.rb +0 -18
- data/reports/.keep +0 -1
- data/spec/fixtures/page_object.rb +0 -22
- data/spec/fixtures/section_object.rb +0 -21
- data/spec/spec_helper.rb +0 -31
- data/spec/testcentricity_web/browser_spec.rb +0 -41
- data/spec/testcentricity_web/elements/audio_spec.rb +0 -68
- data/spec/testcentricity_web/elements/button_spec.rb +0 -18
- data/spec/testcentricity_web/elements/checkbox_spec.rb +0 -33
- data/spec/testcentricity_web/elements/file_field_spec.rb +0 -13
- data/spec/testcentricity_web/elements/image_spec.rb +0 -33
- data/spec/testcentricity_web/elements/label_spec.rb +0 -18
- data/spec/testcentricity_web/elements/link_spec.rb +0 -23
- data/spec/testcentricity_web/elements/list_spec.rb +0 -13
- data/spec/testcentricity_web/elements/radio_spec.rb +0 -28
- data/spec/testcentricity_web/elements/ui_element_spec.rb +0 -125
- data/spec/testcentricity_web/elements/video_spec.rb +0 -68
- data/spec/testcentricity_web/helper_specs/object_helpers_spec.rb +0 -39
- data/spec/testcentricity_web/helper_specs/string_helpers_spec.rb +0 -49
- data/spec/testcentricity_web/page_object_spec.rb +0 -90
- data/spec/testcentricity_web/section_object_spec.rb +0 -72
- data/spec/testcentricity_web/version_spec.rb +0 -7
- data/spec/testcentricity_web/webdriver_connect/grid_webdriver_spec.rb +0 -72
- data/spec/testcentricity_web/webdriver_connect/local_webdriver_spec.rb +0 -86
- data/spec/testcentricity_web/webdriver_connect/mobile_webdriver_spec.rb +0 -65
- data/test_site/basic_test_page.html +0 -290
- data/test_site/chosen-sprite.png +0 -0
- data/test_site/chosen-sprite@2x.png +0 -0
- data/test_site/chosen.css +0 -496
- data/test_site/chosen.jquery.js +0 -1359
- data/test_site/chosen.jquery.min.js +0 -3
- data/test_site/chosen.min.css +0 -11
- data/test_site/chosen.proto.js +0 -1399
- data/test_site/chosen.proto.min.js +0 -3
- data/test_site/composer.json +0 -36
- data/test_site/custom_controls_page.html +0 -629
- data/test_site/docsupport/chosen.png +0 -0
- data/test_site/docsupport/init.js +0 -11
- data/test_site/docsupport/init.proto.js +0 -16
- data/test_site/docsupport/jquery-1.12.4.min.js +0 -5
- data/test_site/docsupport/jquery-3.2.1.min.js +0 -4
- data/test_site/docsupport/oss-credit.png +0 -0
- data/test_site/docsupport/prism.css +0 -108
- data/test_site/docsupport/prism.js +0 -9
- data/test_site/docsupport/prototype-1.7.0.0.js +0 -6082
- data/test_site/docsupport/style.css +0 -219
- data/test_site/images/Blouse_Black.jpg +0 -0
- data/test_site/images/Granny.jpg +0 -0
- data/test_site/images/Printed_Dress.jpg +0 -0
- data/test_site/images/T-shirt.jpg +0 -0
- data/test_site/images/Wilder.jpg +0 -0
- data/test_site/images/You_Betcha.jpg +0 -0
- data/test_site/images/jeans3.jpg +0 -0
- data/test_site/indexed_sections_page.html +0 -215
- data/test_site/media/MIB2-subtitles-pt-BR.vtt +0 -49
- data/test_site/media/MIB2.mp4 +0 -0
- data/test_site/media/MP4_small.mp4 +0 -0
- data/test_site/media/MPS_sample.mp3 +0 -0
- data/test_site/media/bbc_scotland_report.mp3 +0 -0
- data/test_site/media/count_and_bars.mp4 +0 -0
- data/test_site/media_page.html +0 -86
- data/testcentricity_web.gemspec +0 -57
data/spec/spec_helper.rb
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
require 'require_all'
|
|
2
|
-
require 'capybara/rspec'
|
|
3
|
-
require 'httparty'
|
|
4
|
-
require 'simplecov'
|
|
5
|
-
require 'testcentricity_web'
|
|
6
|
-
|
|
7
|
-
require_rel 'fixtures'
|
|
8
|
-
|
|
9
|
-
include TestCentricity
|
|
10
|
-
|
|
11
|
-
SimpleCov.command_name("RSpec-#{Time.now.strftime('%Y%m%d%H%M%S')}")
|
|
12
|
-
|
|
13
|
-
$LOAD_PATH << './lib'
|
|
14
|
-
|
|
15
|
-
# set the default locale and auto load all translations from config/locales/*.rb,yml.
|
|
16
|
-
ENV['LOCALE'] = 'en-US' unless ENV['LOCALE']
|
|
17
|
-
I18n.load_path += Dir['config/locales/*.{rb,yml}']
|
|
18
|
-
I18n.default_locale = 'en-US'
|
|
19
|
-
I18n.locale = ENV['LOCALE']
|
|
20
|
-
Faker::Config.locale = ENV['LOCALE']
|
|
21
|
-
|
|
22
|
-
# prevent Test::Unit's AutoRunner from executing during RSpec's rake task
|
|
23
|
-
Test::Unit.run = true if defined?(Test::Unit) && Test::Unit.respond_to?(:run=)
|
|
24
|
-
|
|
25
|
-
RSpec.configure do |config|
|
|
26
|
-
config.mock_with :rspec do |mocks|
|
|
27
|
-
mocks.allow_message_expectations_on_nil = true
|
|
28
|
-
mocks.verify_doubled_constant_names = true
|
|
29
|
-
mocks.verify_partial_doubles = true
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe TestCentricity::Browsers, required: true do
|
|
4
|
-
before(:context) do
|
|
5
|
-
# instantiate local test environment
|
|
6
|
-
@environs ||= EnvironData
|
|
7
|
-
@environs.find_environ('LOCAL', :yaml)
|
|
8
|
-
ENV['WEB_BROWSER'] = 'chrome_headless'
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
context 'web browser with multiple tabs/windows' do
|
|
12
|
-
it 'returns number of browser windows/tabs' do
|
|
13
|
-
WebDriverConnect.initialize_web_driver
|
|
14
|
-
Capybara.current_session.open_new_window
|
|
15
|
-
Capybara.current_session.open_new_window
|
|
16
|
-
expect(Browsers.num_browser_instances).to eql 3
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'closes original browser instance' do
|
|
20
|
-
WebDriverConnect.initialize_web_driver
|
|
21
|
-
Capybara.current_session.open_new_window
|
|
22
|
-
Browsers.close_old_browser_instance
|
|
23
|
-
expect(Browsers.num_browser_instances).to eql 1
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it 'closes current browser instance' do
|
|
27
|
-
WebDriverConnect.initialize_web_driver
|
|
28
|
-
Capybara.current_session.open_new_window
|
|
29
|
-
Browsers.switch_to_new_browser_instance
|
|
30
|
-
Capybara.current_session.open_new_window
|
|
31
|
-
Browsers.close_current_browser_instance
|
|
32
|
-
expect(Browsers.num_browser_instances).to eql 2
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
after(:each) do
|
|
37
|
-
Browsers.close_all_browser_instances
|
|
38
|
-
Capybara.current_session.quit
|
|
39
|
-
Environ.session_state = :quit
|
|
40
|
-
end
|
|
41
|
-
end
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe TestCentricity::Audio, required: true do
|
|
4
|
-
subject(:css_audio) { described_class.new(:test_audio, self, 'audio#css_audio', :page) }
|
|
5
|
-
|
|
6
|
-
it 'returns class' do
|
|
7
|
-
expect(css_audio.class).to eql TestCentricity::Audio
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'registers with type audio' do
|
|
11
|
-
expect(css_audio.get_object_type).to eql :audio
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'returns autoplay' do
|
|
15
|
-
allow(css_audio).to receive(:autoplay?).and_return(false)
|
|
16
|
-
expect(css_audio.autoplay?).to eql false
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'returns controls' do
|
|
20
|
-
allow(css_audio).to receive(:controls?).and_return(true)
|
|
21
|
-
expect(css_audio.controls?).to eql true
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it 'returns ended' do
|
|
25
|
-
allow(css_audio).to receive(:ended?).and_return(true)
|
|
26
|
-
expect(css_audio.ended?).to eql true
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it 'returns loop' do
|
|
30
|
-
allow(css_audio).to receive(:loop?).and_return(false)
|
|
31
|
-
expect(css_audio.loop?).to eql false
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it 'returns muted' do
|
|
35
|
-
allow(css_audio).to receive(:muted?).and_return(false)
|
|
36
|
-
expect(css_audio.muted?).to eql false
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
it 'returns paused' do
|
|
40
|
-
allow(css_audio).to receive(:paused?).and_return(true)
|
|
41
|
-
expect(css_audio.paused?).to eql true
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
it 'returns seeking' do
|
|
45
|
-
allow(css_audio).to receive(:seeking?).and_return(false)
|
|
46
|
-
expect(css_audio.seeking?).to eql false
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
it 'should play the audio' do
|
|
50
|
-
expect(css_audio).to receive(:play)
|
|
51
|
-
css_audio.play
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it 'should pause the audio' do
|
|
55
|
-
expect(css_audio).to receive(:pause)
|
|
56
|
-
css_audio.pause
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
it 'should mute the audio' do
|
|
60
|
-
expect(css_audio).to receive(:mute)
|
|
61
|
-
css_audio.mute
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
it 'should unmute the audio' do
|
|
65
|
-
expect(css_audio).to receive(:unmute)
|
|
66
|
-
css_audio.unmute
|
|
67
|
-
end
|
|
68
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe TestCentricity::Button, required: true do
|
|
4
|
-
subject(:css_button) { described_class.new(:test_button, self, 'button#css_button', :page) }
|
|
5
|
-
|
|
6
|
-
it 'returns class' do
|
|
7
|
-
expect(css_button.class).to eql TestCentricity::Button
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'registers with type button' do
|
|
11
|
-
expect(css_button.get_object_type).to eql :button
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'should click the button' do
|
|
15
|
-
expect(css_button).to receive(:click)
|
|
16
|
-
css_button.click
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe TestCentricity::CheckBox, required: true do
|
|
4
|
-
subject(:css_check) { described_class.new(:test_check, self, 'input#css_check', :page) }
|
|
5
|
-
|
|
6
|
-
it 'returns class' do
|
|
7
|
-
expect(css_check.class).to eql TestCentricity::CheckBox
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'registers with type checkbox' do
|
|
11
|
-
expect(css_check.get_object_type).to eql :checkbox
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'should check the checkbox' do
|
|
15
|
-
expect(css_check).to receive(:check)
|
|
16
|
-
css_check.check
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'should uncheck the checkbox' do
|
|
20
|
-
expect(css_check).to receive(:uncheck)
|
|
21
|
-
css_check.uncheck
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it 'should know if checkbox is checked' do
|
|
25
|
-
allow(css_check).to receive(:checked?).and_return(true)
|
|
26
|
-
expect(css_check.checked?).to eq(true)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it 'should know if checkbox is indeterminate' do
|
|
30
|
-
allow(css_check).to receive(:indeterminate?).and_return(true)
|
|
31
|
-
expect(css_check.indeterminate?).to eq(true)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe TestCentricity::FileField, required: true do
|
|
4
|
-
subject(:css_filefield) { described_class.new(:test_filefield, self, 'input#css_filefield', :page) }
|
|
5
|
-
|
|
6
|
-
it 'returns class' do
|
|
7
|
-
expect(css_filefield.class).to eql TestCentricity::FileField
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'registers with type label' do
|
|
11
|
-
expect(css_filefield.get_object_type).to eql :filefield
|
|
12
|
-
end
|
|
13
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe TestCentricity::Image, required: true do
|
|
4
|
-
subject(:css_image) { described_class.new(:test_image, self, 'img#css_image', :page) }
|
|
5
|
-
|
|
6
|
-
it 'returns class' do
|
|
7
|
-
expect(css_image.class).to eql TestCentricity::Image
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'registers with type image' do
|
|
11
|
-
expect(css_image.get_object_type).to eql :image
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'returns loaded' do
|
|
15
|
-
allow(css_image).to receive(:loaded?).and_return(true)
|
|
16
|
-
expect(css_image.loaded?).to eql true
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'returns broken' do
|
|
20
|
-
allow(css_image).to receive(:broken?).and_return(false)
|
|
21
|
-
expect(css_image.broken?).to eql false
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it 'returns alt' do
|
|
25
|
-
allow(css_image).to receive(:alt).and_return('alt')
|
|
26
|
-
expect(css_image.alt).to eql 'alt'
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it 'returns src' do
|
|
30
|
-
allow(css_image).to receive(:src).and_return('src')
|
|
31
|
-
expect(css_image.src).to eql 'src'
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe TestCentricity::Label, required: true do
|
|
4
|
-
subject(:css_label) { described_class.new(:test_label, self, 'label#css_label', :page) }
|
|
5
|
-
|
|
6
|
-
it 'returns class' do
|
|
7
|
-
expect(css_label.class).to eql TestCentricity::Label
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'registers with type label' do
|
|
11
|
-
expect(css_label.get_object_type).to eql :label
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'returns caption' do
|
|
15
|
-
allow(css_label).to receive(:caption).and_return('caption')
|
|
16
|
-
expect(css_label.caption).to eql 'caption'
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe TestCentricity::Link, required: true do
|
|
4
|
-
subject(:css_link) { described_class.new(:test_label, self, 'a#css_label', :page) }
|
|
5
|
-
|
|
6
|
-
it 'returns class' do
|
|
7
|
-
expect(css_link.class).to eql TestCentricity::Link
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'registers with type link' do
|
|
11
|
-
expect(css_link.get_object_type).to eql :link
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'returns href' do
|
|
15
|
-
allow(css_link).to receive(:href).and_return('href')
|
|
16
|
-
expect(css_link.href).to eql 'href'
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'should click the link' do
|
|
20
|
-
expect(css_link).to receive(:click)
|
|
21
|
-
css_link.click
|
|
22
|
-
end
|
|
23
|
-
end
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe TestCentricity::List, required: true do
|
|
4
|
-
subject(:css_list) { described_class.new(:test_list, self, 'ul#css_list', :page) }
|
|
5
|
-
|
|
6
|
-
it 'returns class' do
|
|
7
|
-
expect(css_list.class).to eql TestCentricity::List
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'registers with type list' do
|
|
11
|
-
expect(css_list.get_object_type).to eql :list
|
|
12
|
-
end
|
|
13
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe TestCentricity::Radio, required: true do
|
|
4
|
-
subject(:css_radio) { described_class.new(:test_radio, self, 'input#css_radio', :page) }
|
|
5
|
-
|
|
6
|
-
it 'returns class' do
|
|
7
|
-
expect(css_radio.class).to eql TestCentricity::Radio
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'registers with type radio' do
|
|
11
|
-
expect(css_radio.get_object_type).to eql :radio
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'should select the radio' do
|
|
15
|
-
expect(css_radio).to receive(:select)
|
|
16
|
-
css_radio.select
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'should unselect the radio' do
|
|
20
|
-
expect(css_radio).to receive(:unselect)
|
|
21
|
-
css_radio.unselect
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it 'should know if radio is selected' do
|
|
25
|
-
allow(css_radio).to receive(:selected?).and_return(true)
|
|
26
|
-
expect(css_radio.selected?).to eq(true)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe TestCentricity::UIElement, required: true do
|
|
4
|
-
subject(:css_element) { described_class.new(:css_test_element, self, 'button#css_button', :page) }
|
|
5
|
-
subject(:xpath_element) { described_class.new(:xpath_test_element, self, "//button[@id='xpath_button']", :page) }
|
|
6
|
-
|
|
7
|
-
it 'returns class' do
|
|
8
|
-
expect(css_element.class).to eql described_class
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
it 'returns css locator type' do
|
|
12
|
-
expect(css_element.get_locator_type).to eql :css
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it 'returns xpath locator type' do
|
|
16
|
-
expect(xpath_element.get_locator_type).to eql :xpath
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'returns name' do
|
|
20
|
-
expect(css_element.get_name).to eql :css_test_element
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it 'returns locator' do
|
|
24
|
-
expect(css_element.get_locator).to eql 'button#css_button'
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it 'returns css locator type' do
|
|
28
|
-
expect(css_element.get_locator_type).to eql :css
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it 'should click the element' do
|
|
32
|
-
allow(css_element).to receive(:click)
|
|
33
|
-
css_element.click
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it 'should double click the element' do
|
|
37
|
-
allow(css_element).to receive(:double_click)
|
|
38
|
-
css_element.double_click
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
it 'should right click the element' do
|
|
42
|
-
allow(css_element).to receive(:right_click)
|
|
43
|
-
css_element.right_click
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it 'should click the element at specified offset' do
|
|
47
|
-
allow(css_element).to receive(:click_at)
|
|
48
|
-
css_element.click_at(10, 10)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
it 'should hover over the element' do
|
|
52
|
-
allow(css_element).to receive(:hover)
|
|
53
|
-
css_element.hover
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
it 'should hover over the element at specified offset' do
|
|
57
|
-
allow(css_element).to receive(:hover_at)
|
|
58
|
-
css_element.hover_at(10, 15)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it 'should drag the element by specified offset' do
|
|
62
|
-
allow(css_element).to receive(:drag_by)
|
|
63
|
-
css_element.drag_by(20, 15)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
it 'should know if element is visible' do
|
|
67
|
-
allow(css_element).to receive(:visible?).and_return(false)
|
|
68
|
-
expect(css_element.visible?).to eq(false)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
it 'should know if element is hidden' do
|
|
72
|
-
allow(css_element).to receive(:hidden?).and_return(true)
|
|
73
|
-
expect(css_element.hidden?).to eq(true)
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
it 'should know if element exists' do
|
|
77
|
-
allow(css_element).to receive(:exists?).and_return(true)
|
|
78
|
-
expect(css_element.exists?).to be true
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it 'should know if element is disabled' do
|
|
82
|
-
allow(css_element).to receive(:enabled?).and_return(true)
|
|
83
|
-
expect(css_element.enabled?).to eq(true)
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
it 'should know if element is disabled' do
|
|
87
|
-
allow(css_element).to receive(:disabled?).and_return(true)
|
|
88
|
-
expect(css_element.disabled?).to eq(true)
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
it 'should know if element is obscured' do
|
|
92
|
-
allow(css_element).to receive(:obscured?).and_return(true)
|
|
93
|
-
expect(css_element.obscured?).to eq(true)
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
it 'should know if element is focused' do
|
|
97
|
-
allow(css_element).to receive(:focused?).and_return(true)
|
|
98
|
-
expect(css_element.focused?).to eq(true)
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
it 'should know if element is displayed' do
|
|
102
|
-
allow(css_element).to receive(:displayed?).and_return(true)
|
|
103
|
-
expect(css_element.displayed?).to eq(true)
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
it 'should know if element is required' do
|
|
107
|
-
allow(css_element).to receive(:required?).and_return(true)
|
|
108
|
-
expect(css_element.required?).to eq(true)
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
it 'should send keys' do
|
|
112
|
-
allow(css_element).to receive(:send_keys).with('foo bar')
|
|
113
|
-
css_element.send_keys('foo bar')
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
it 'should right highlight the element' do
|
|
117
|
-
allow(css_element).to receive(:highlight)
|
|
118
|
-
css_element.highlight(2)
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
it 'should right unhighlight the element' do
|
|
122
|
-
allow(css_element).to receive(:unhighlight)
|
|
123
|
-
css_element.unhighlight
|
|
124
|
-
end
|
|
125
|
-
end
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe TestCentricity::Video, required: true do
|
|
4
|
-
subject(:css_video) { described_class.new(:test_video, self, 'video#css_video', :page) }
|
|
5
|
-
|
|
6
|
-
it 'returns class' do
|
|
7
|
-
expect(css_video.class).to eql TestCentricity::Video
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'registers with type video' do
|
|
11
|
-
expect(css_video.get_object_type).to eql :video
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'returns autoplay' do
|
|
15
|
-
allow(css_video).to receive(:autoplay?).and_return(false)
|
|
16
|
-
expect(css_video.autoplay?).to eql false
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'returns controls' do
|
|
20
|
-
allow(css_video).to receive(:controls?).and_return(true)
|
|
21
|
-
expect(css_video.controls?).to eql true
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it 'returns ended' do
|
|
25
|
-
allow(css_video).to receive(:ended?).and_return(true)
|
|
26
|
-
expect(css_video.ended?).to eql true
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it 'returns loop' do
|
|
30
|
-
allow(css_video).to receive(:loop?).and_return(false)
|
|
31
|
-
expect(css_video.loop?).to eql false
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it 'returns muted' do
|
|
35
|
-
allow(css_video).to receive(:muted?).and_return(false)
|
|
36
|
-
expect(css_video.muted?).to eql false
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
it 'returns paused' do
|
|
40
|
-
allow(css_video).to receive(:paused?).and_return(true)
|
|
41
|
-
expect(css_video.paused?).to eql true
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
it 'returns seeking' do
|
|
45
|
-
allow(css_video).to receive(:seeking?).and_return(false)
|
|
46
|
-
expect(css_video.seeking?).to eql false
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
it 'should play the video' do
|
|
50
|
-
expect(css_video).to receive(:play)
|
|
51
|
-
css_video.play
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it 'should pause the video' do
|
|
55
|
-
expect(css_video).to receive(:pause)
|
|
56
|
-
css_video.pause
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
it 'should mute the video' do
|
|
60
|
-
expect(css_video).to receive(:mute)
|
|
61
|
-
css_video.mute
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
it 'should unmute the video' do
|
|
65
|
-
expect(css_video).to receive(:unmute)
|
|
66
|
-
css_video.unmute
|
|
67
|
-
end
|
|
68
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe Object, required: true do
|
|
4
|
-
it 'returns true when blank' do
|
|
5
|
-
[nil, {}, ''].each do |value|
|
|
6
|
-
expect(value.blank?).to eql true
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'returns false when not blank' do
|
|
11
|
-
[0, 42, 'fred', ['Fred', 21], {a: 42}].each do |value|
|
|
12
|
-
expect(value.blank?).to eql false
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
it 'returns true when present' do
|
|
17
|
-
[0, 42, 'fred', ['Fred', 21], {a: 42}].each do |value|
|
|
18
|
-
expect(value.present?).to eql true
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it 'returns false when not present' do
|
|
23
|
-
[nil, {}, ''].each do |value|
|
|
24
|
-
expect(value.present?).to eql false
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it 'returns true when Boolean' do
|
|
29
|
-
[!nil?, nil?, 2 + 2 == 4].each do |value|
|
|
30
|
-
expect(value.boolean?).to eql true
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it 'returns false when not a Boolean' do
|
|
35
|
-
[4, 'Ethel', [1, 'a']].each do |value|
|
|
36
|
-
expect(value.boolean?).to eql false
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe String, required: true do
|
|
4
|
-
it 'returns string between' do
|
|
5
|
-
expect('The rain in Spain'.string_between('The ', ' Spain')).to eql 'rain in'
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
it 'returns title case' do
|
|
9
|
-
expect('The rain in Spain'.titlecase).to eql 'The Rain In Spain'
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
it 'returns boolean value when true' do
|
|
13
|
-
%w[true t yes y x 1].each do |value|
|
|
14
|
-
expect(value.to_bool).to eql true
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it 'returns boolean value when false' do
|
|
19
|
-
%w[false f no n 0].each do |value|
|
|
20
|
-
expect(value.to_bool).to eql false
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it 'returns true when Integer' do
|
|
25
|
-
%w[26 3 10345].each do |value|
|
|
26
|
-
expect(value.is_int?).to eql true
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it 'returns false when not an Integer' do
|
|
31
|
-
%w[271.234 0.1234 Fred].each do |value|
|
|
32
|
-
expect(value.is_int?).to eql false
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it 'returns true when Float' do
|
|
37
|
-
%w[271.234 0.1234 21.4].each do |value|
|
|
38
|
-
expect(value.is_float?).to eql true
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
it 'returns formatted date' do
|
|
43
|
-
expect('04/06/2022'.format_date_time('%A, %d %b %Y')).to eql 'Saturday, 04 Jun 2022'
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it 'returns translated formatted date' do
|
|
47
|
-
expect('04/06/2022'.format_date_time(:abbrev)).to eql 'Jun 04, 2022'
|
|
48
|
-
end
|
|
49
|
-
end
|