axe-core-api 4.7.0 → 4.11.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/lib/axe/api/run.rb +61 -38
- data/lib/axe/api.rb +5 -0
- data/lib/axe/core.rb +1 -0
- data/lib/axe/matchers/be_axe_clean.rb +1 -1
- data/node_modules/axe-core/axe.min.js +3 -3
- metadata +17 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 635c67b1defbdccd86a32394df3afad0d014cb873fa495dd2c854a6755ee09f1
|
|
4
|
+
data.tar.gz: 9f0bbcb4bf6ec1dfae600a111f50b8f0737ced0c8aa4510d507477c53c5066ec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e2c90b6f2f51ca81b512c6943ae36f6ba2222df50c60a5bdfda4c7c728772826d4d10962680ad81ffb39fac6e4477b760363ed1c8a76abdd2423d6255e0741bd
|
|
7
|
+
data.tar.gz: 2f5eb900d7b7d049c1617e8e7d9e9e393e659342b38f565c2d115c68f69ee5267814310fd1be6507990c156520274f4d16d17a4950eb8282abbfa2e7881fb498
|
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
|
|
|
@@ -80,22 +87,28 @@ module Axe
|
|
|
80
87
|
|
|
81
88
|
def within_about_blank_context(page)
|
|
82
89
|
driver = get_selenium page
|
|
90
|
+
# This is a workaround to maintain Selenium 3 support
|
|
91
|
+
# Likely driver.switch_to.new_window(:tab) should be used instead, should we drop support, as per
|
|
92
|
+
# https://github.com/dequelabs/axe-core-gems/issues/352
|
|
83
93
|
|
|
84
|
-
|
|
94
|
+
before_handles = page.window_handles
|
|
85
95
|
begin
|
|
86
96
|
driver.execute_script("window.open('about:blank'), '_blank'")
|
|
87
|
-
if num_handles == page.window_handles.length
|
|
88
|
-
raise StandardError.new "Could not open new window. Please make sure that you have popup blockers disabled."
|
|
89
|
-
end
|
|
90
|
-
driver.switch_to.window page.window_handles[-1]
|
|
91
97
|
rescue
|
|
92
|
-
|
|
98
|
+
raise StandardError.new "switchToWindow failed. Are you using updated browser drivers? Please check out https://github.com/dequelabs/axe-core-gems/blob/develop/error-handling.md"
|
|
99
|
+
end
|
|
100
|
+
after_handles = page.window_handles
|
|
101
|
+
new_handles = after_handles.difference(before_handles)
|
|
102
|
+
if new_handles.length != 1
|
|
103
|
+
raise StandardError.new "Unable to determine window handle"
|
|
93
104
|
end
|
|
105
|
+
new_handle = new_handles[0]
|
|
106
|
+
driver.switch_to.window new_handle
|
|
94
107
|
driver.get "about:blank"
|
|
95
108
|
|
|
96
109
|
ret = yield page
|
|
97
110
|
|
|
98
|
-
driver.switch_to.window
|
|
111
|
+
driver.switch_to.window new_handle
|
|
99
112
|
driver.close
|
|
100
113
|
driver.switch_to.window @original_window
|
|
101
114
|
|
|
@@ -108,15 +121,15 @@ module Axe
|
|
|
108
121
|
page.current_window_handle
|
|
109
122
|
end
|
|
110
123
|
|
|
111
|
-
def run_partial_recursive(page, context, lib, top_level = false)
|
|
124
|
+
def run_partial_recursive(page, context, lib, top_level = false, frame_stack = [])
|
|
112
125
|
begin
|
|
126
|
+
current_window_handle = window_handle page
|
|
113
127
|
if not top_level
|
|
114
128
|
begin
|
|
115
129
|
Common::Loader.new(page, lib).load_top_level Axe::Configuration.instance.jslib
|
|
116
130
|
rescue
|
|
117
131
|
return [nil]
|
|
118
132
|
end
|
|
119
|
-
|
|
120
133
|
end
|
|
121
134
|
|
|
122
135
|
frame_contexts = get_frame_context_script page
|
|
@@ -126,20 +139,30 @@ module Axe
|
|
|
126
139
|
end
|
|
127
140
|
|
|
128
141
|
res = axe_run_partial page, context
|
|
129
|
-
if res.key?("errorMessage")
|
|
130
|
-
|
|
142
|
+
if res.nil? || res.key?("errorMessage")
|
|
143
|
+
if top_level
|
|
144
|
+
throw res unless res.nil?
|
|
145
|
+
throw "axe.runPartial returned null"
|
|
146
|
+
end
|
|
131
147
|
return [nil]
|
|
132
148
|
else
|
|
133
149
|
results = [res]
|
|
134
150
|
end
|
|
135
151
|
|
|
136
152
|
for frame_context in frame_contexts
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
153
|
+
begin
|
|
154
|
+
frame_selector = frame_context["frameSelector"]
|
|
155
|
+
frame_context = frame_context["frameContext"]
|
|
156
|
+
frame = axe_shadow_select page, frame_selector
|
|
157
|
+
switch_to_frame_by_handle page, frame
|
|
158
|
+
res = run_partial_recursive page, frame_context, lib, false, [*frame_stack, frame]
|
|
159
|
+
results += res
|
|
160
|
+
rescue Selenium::WebDriver::Error::TimeoutError
|
|
161
|
+
page = get_selenium page
|
|
162
|
+
page.switch_to.window current_window_handle
|
|
163
|
+
frame_stack.each {|frame| page.switch_to.frame frame }
|
|
164
|
+
results.push nil
|
|
165
|
+
end
|
|
143
166
|
end
|
|
144
167
|
|
|
145
168
|
ensure
|
data/lib/axe/api.rb
ADDED
data/lib/axe/core.rb
CHANGED