chemlab 0.2.1 → 0.6.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/Rakefile +6 -0
- data/bin/chemlab +10 -0
- data/bin/chemlab-suite +1 -0
- data/bin/chemlab-test +1 -0
- data/lib/chemlab.rb +27 -17
- data/lib/chemlab/attributable.rb +16 -10
- data/lib/chemlab/cli/fixtures/new_library/.gitignore +63 -0
- data/lib/chemlab/cli/fixtures/new_library/Gemfile +5 -0
- data/lib/chemlab/cli/fixtures/new_library/README.md.erb +1 -0
- data/lib/chemlab/cli/fixtures/new_library/lib/new_library.rb.erb +7 -0
- data/lib/chemlab/cli/fixtures/new_library/lib/page/sample.rb.erb +9 -0
- data/lib/chemlab/cli/fixtures/new_library/new_library.gemspec.erb +23 -0
- data/lib/chemlab/cli/fixtures/new_library/spec/integration/page/sample_spec.rb.erb +17 -0
- data/lib/chemlab/cli/fixtures/new_library/spec/unit/page/sample_spec.rb.erb +19 -0
- data/lib/chemlab/cli/generator.rb +46 -0
- data/lib/chemlab/cli/generator/templates/page.erb +3 -0
- data/lib/chemlab/cli/new_library.rb +62 -0
- data/lib/chemlab/cli/stub.erb +65 -0
- data/lib/chemlab/cli/stubber.rb +74 -0
- data/lib/chemlab/component.rb +78 -8
- data/lib/chemlab/configuration.rb +61 -13
- data/lib/chemlab/element.rb +5 -0
- data/lib/chemlab/page.rb +20 -2
- data/lib/chemlab/runtime/browser.rb +19 -25
- data/lib/chemlab/runtime/env.rb +13 -9
- data/lib/chemlab/runtime/logger.rb +16 -13
- data/lib/chemlab/version.rb +1 -1
- data/lib/tasks/generate.rake +22 -0
- data/lib/tasks/generate_stubs.rake +20 -0
- data/lib/tasks/help.rake +24 -0
- data/lib/tasks/new.rake +19 -0
- data/lib/tasks/version.rake +8 -0
- metadata +68 -58
- data/lib/chemlab/api_fabricator.rb +0 -134
- data/lib/chemlab/resource.rb +0 -169
- data/lib/chemlab/runtime/api_client.rb +0 -18
- data/lib/chemlab/support/api.rb +0 -71
- data/lib/chemlab/support/logging.rb +0 -176
- data/lib/chemlab/support/repeater.rb +0 -65
- data/lib/chemlab/support/waiter.rb +0 -39
@@ -1,65 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'active_support/inflector'
|
4
|
-
|
5
|
-
module Chemlab
|
6
|
-
module Support
|
7
|
-
module Repeater
|
8
|
-
DEFAULT_MAX_WAIT_TIME = 60
|
9
|
-
|
10
|
-
RetriesExceededError = Class.new(RuntimeError)
|
11
|
-
WaitExceededError = Class.new(RuntimeError)
|
12
|
-
|
13
|
-
def repeat_until(max_attempts: nil, max_duration: nil, reload_page: nil, sleep_interval: 0, raise_on_failure: true, retry_on_exception: false, log: true)
|
14
|
-
attempts = 0
|
15
|
-
start = Time.now
|
16
|
-
|
17
|
-
begin
|
18
|
-
while remaining_attempts?(attempts, max_attempts) && remaining_time?(start, max_duration)
|
19
|
-
QA::Runtime::Logger.debug("Attempt number #{attempts + 1}") if max_attempts && log
|
20
|
-
|
21
|
-
result = yield
|
22
|
-
return result if result
|
23
|
-
|
24
|
-
sleep_and_reload_if_needed(sleep_interval, reload_page)
|
25
|
-
attempts += 1
|
26
|
-
end
|
27
|
-
rescue StandardError, RSpec::Expectations::ExpectationNotMetError
|
28
|
-
raise unless retry_on_exception
|
29
|
-
|
30
|
-
attempts += 1
|
31
|
-
if remaining_attempts?(attempts, max_attempts) && remaining_time?(start, max_duration)
|
32
|
-
sleep_and_reload_if_needed(sleep_interval, reload_page)
|
33
|
-
|
34
|
-
retry
|
35
|
-
else
|
36
|
-
raise
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
if raise_on_failure
|
41
|
-
raise RetriesExceededError, "Retry condition not met after #{max_attempts} #{'attempt'.pluralize(max_attempts)}" unless remaining_attempts?(attempts, max_attempts)
|
42
|
-
|
43
|
-
raise WaitExceededError, "Wait condition not met after #{max_duration} #{'second'.pluralize(max_duration)}"
|
44
|
-
end
|
45
|
-
|
46
|
-
false
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
def sleep_and_reload_if_needed(sleep_interval, reload_page)
|
52
|
-
sleep(sleep_interval)
|
53
|
-
reload_page.refresh if reload_page
|
54
|
-
end
|
55
|
-
|
56
|
-
def remaining_attempts?(attempts, max_attempts)
|
57
|
-
max_attempts ? attempts < max_attempts : true
|
58
|
-
end
|
59
|
-
|
60
|
-
def remaining_time?(start, max_duration)
|
61
|
-
max_duration ? Time.now - start < max_duration : true
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Chemlab
|
4
|
-
module Support
|
5
|
-
module Waiter
|
6
|
-
extend Repeater
|
7
|
-
|
8
|
-
module_function
|
9
|
-
|
10
|
-
def wait_until(max_duration: singleton_class::DEFAULT_MAX_WAIT_TIME, reload_page: nil, sleep_interval: 0.1, raise_on_failure: true, retry_on_exception: false, log: true)
|
11
|
-
if log
|
12
|
-
QA::Runtime::Logger.debug(
|
13
|
-
<<~MSG.tr("\n", ' ')
|
14
|
-
with wait_until: max_duration: #{max_duration};
|
15
|
-
reload_page: #{reload_page};
|
16
|
-
sleep_interval: #{sleep_interval};
|
17
|
-
raise_on_failure: #{raise_on_failure}
|
18
|
-
MSG
|
19
|
-
)
|
20
|
-
end
|
21
|
-
|
22
|
-
result = nil
|
23
|
-
self.repeat_until(
|
24
|
-
max_duration: max_duration,
|
25
|
-
reload_page: reload_page,
|
26
|
-
sleep_interval: sleep_interval,
|
27
|
-
raise_on_failure: raise_on_failure,
|
28
|
-
retry_on_exception: retry_on_exception,
|
29
|
-
log: log
|
30
|
-
) do
|
31
|
-
result = yield
|
32
|
-
end
|
33
|
-
QA::Runtime::Logger.debug("ended wait_until") if log
|
34
|
-
|
35
|
-
result
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|