axe-core-api 4.7.0.pre.3fef592 → 4.7.0.pre.bef7d97
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/lib/axe/api/run.rb +43 -29
- data/lib/axe/core.rb +15 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f63f03aabbdc386e87f007bca1f14e666203847b1bd40421998c24e2d2753de5
|
4
|
+
data.tar.gz: 15e008be4b1485ba688b20623fb745b573926f68cb26ae24df1e2fe881c17e0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 45017760cb3d8fd6a57516f3eb46d91430e1cd0a29a645f07c859e7680aaf54b06ddf98f8119e0479bf8bf61c4b2d4e73db269135e269ccb2eb8e32aa1b9c90c
|
7
|
+
data.tar.gz: da50e4c0d64abd5edc33c7ed947e21dd926beed96f3b09e0db477e8fcff2b97e4dc52eb3caac11fd66e874fb2960dca9e3904ca1791196f7abfc0af3daf52de5
|
data/lib/axe/api/run.rb
CHANGED
@@ -32,27 +32,34 @@ module Axe
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def analyze_post_43x(page, lib)
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
35
|
+
user_page_load = (get_selenium page).manage.timeouts.page_load
|
36
|
+
(get_selenium page).manage.timeouts.page_load = 1
|
37
|
+
begin
|
38
|
+
@original_window = window_handle page
|
39
|
+
partial_results = run_partial_recursive(page, @context, lib, true)
|
40
|
+
throw partial_results if partial_results.respond_to?("key?") and partial_results.key?("errorMessage")
|
41
|
+
results = within_about_blank_context(page) { |page|
|
42
|
+
partial_res_str = partial_results.to_json
|
43
|
+
size_limit = 10_000_000
|
44
|
+
while not partial_res_str.empty? do
|
45
|
+
chunk_size = size_limit
|
46
|
+
chunk_size = partial_res_str.length if chunk_size > partial_res_str.length
|
47
|
+
chunk = partial_res_str[0..chunk_size-1]
|
48
|
+
partial_res_str = partial_res_str[chunk_size..-1]
|
49
|
+
store_chunk page, chunk
|
50
|
+
end
|
51
|
+
|
52
|
+
Common::Loader.new(page, lib).load_top_level Axe::Configuration.instance.jslib
|
53
|
+
begin
|
54
|
+
axe_finish_run page
|
55
|
+
rescue
|
56
|
+
raise StandardError.new "axe.finishRun failed. Please check out https://github.com/dequelabs/axe-core-gems/blob/develop/error-handling.md"
|
57
|
+
end
|
58
|
+
|
59
|
+
}
|
60
|
+
ensure
|
61
|
+
(get_selenium page).manage.timeouts.page_load = user_page_load
|
62
|
+
end
|
56
63
|
Audit.new to_js, Results.new(results)
|
57
64
|
end
|
58
65
|
|
@@ -108,15 +115,15 @@ module Axe
|
|
108
115
|
page.current_window_handle
|
109
116
|
end
|
110
117
|
|
111
|
-
def run_partial_recursive(page, context, lib, top_level = false)
|
118
|
+
def run_partial_recursive(page, context, lib, top_level = false, frame_stack = [])
|
112
119
|
begin
|
120
|
+
current_window_handle = window_handle page
|
113
121
|
if not top_level
|
114
122
|
begin
|
115
123
|
Common::Loader.new(page, lib).load_top_level Axe::Configuration.instance.jslib
|
116
124
|
rescue
|
117
125
|
return [nil]
|
118
126
|
end
|
119
|
-
|
120
127
|
end
|
121
128
|
|
122
129
|
frame_contexts = get_frame_context_script page
|
@@ -134,12 +141,19 @@ module Axe
|
|
134
141
|
end
|
135
142
|
|
136
143
|
for frame_context in frame_contexts
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
144
|
+
begin
|
145
|
+
frame_selector = frame_context["frameSelector"]
|
146
|
+
frame_context = frame_context["frameContext"]
|
147
|
+
frame = axe_shadow_select page, frame_selector
|
148
|
+
switch_to_frame_by_handle page, frame
|
149
|
+
res = run_partial_recursive page, frame_context, lib, false, [*frame_stack, frame]
|
150
|
+
results += res
|
151
|
+
rescue Selenium::WebDriver::Error::TimeoutError
|
152
|
+
page = get_selenium page
|
153
|
+
page.switch_to.window current_window_handle
|
154
|
+
frame_stack.each {|frame| page.switch_to.frame frame }
|
155
|
+
results.push nil
|
156
|
+
end
|
143
157
|
end
|
144
158
|
|
145
159
|
ensure
|
data/lib/axe/core.rb
CHANGED
@@ -3,6 +3,7 @@ require_relative "../webdriver_script_adapter/frame_adapter"
|
|
3
3
|
require_relative "../webdriver_script_adapter/query_selector_adapter"
|
4
4
|
require_relative "../loader"
|
5
5
|
require_relative "./configuration"
|
6
|
+
require 'timeout'
|
6
7
|
|
7
8
|
module Axe
|
8
9
|
class Core
|
@@ -37,8 +38,22 @@ module Axe
|
|
37
38
|
Core.has_run_partial?(@page) and not Axe::Configuration.instance.legacy_mode
|
38
39
|
end
|
39
40
|
|
41
|
+
def assert_frame_ready
|
42
|
+
begin
|
43
|
+
ready = Timeout.timeout(10) {
|
44
|
+
@page.evaluate_script <<-JS
|
45
|
+
document.readyState === 'complete'
|
46
|
+
JS
|
47
|
+
}
|
48
|
+
rescue Timeout::Error
|
49
|
+
ready = false
|
50
|
+
end
|
51
|
+
raise Exception.new "Page/frame not ready" if not ready
|
52
|
+
end
|
53
|
+
|
40
54
|
def load_axe_core(source)
|
41
55
|
return if already_loaded?
|
56
|
+
assert_frame_ready
|
42
57
|
loader = Common::Loader.new(@page, self)
|
43
58
|
loader.load_top_level source
|
44
59
|
return if use_run_partial
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: axe-core-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.7.0.pre.
|
4
|
+
version: 4.7.0.pre.bef7d97
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Deque Systems
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dumb_delegator
|