Skip to content

Commit 44d9864

Browse files
committed
Attempt to increase Capybara wait time for CSS selector tests
1 parent c5909f7 commit 44d9864

File tree

1 file changed

+56
-54
lines changed

1 file changed

+56
-54
lines changed

test/css/component_selector_use_test.rb

Lines changed: 56 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -50,73 +50,75 @@ class ComponentSelectorUseTest < System::TestCase
5050

5151
previews.each do |preview|
5252
define_method("test_selectors_used_by_#{component_uri.parameterize(separator: '_')}_#{preview}_are_valid") do
53-
visit("/rails/view_components/#{component_uri}/#{preview}")
54-
55-
global_ignored_selectors = IGNORED_SELECTORS.fetch(:global, [])
56-
ignored_selectors = IGNORED_SELECTORS.fetch(component_class, [])
57-
58-
unmatched_selectors = driver.evaluate_async_script(<<~JS, COMPONENT_SELECTORS, global_ignored_selectors, ignored_selectors)
59-
const [componentSelectors, globalIgnoredSelectors, ignoredSelectors, callback] = arguments;
60-
const root = document.querySelector('.preview-wrap > *');
61-
62-
const ignoreClass = (className) => {
63-
return(
64-
globalIgnoredSelectors.includes(className) ||
65-
ignoredSelectors.includes(className) ||
66-
className.startsWith('octicon-')
67-
);
68-
};
69-
70-
const ignoreNode = (node) => {
71-
for (let i = 0; i < node.classList.length; i ++) {
72-
if (!ignoreClass(node.classList[i])) {
73-
return false;
53+
Capybara.current_session.using_wait_time(10) do
54+
visit("/rails/view_components/#{component_uri}/#{preview}")
55+
56+
global_ignored_selectors = IGNORED_SELECTORS.fetch(:global, [])
57+
ignored_selectors = IGNORED_SELECTORS.fetch(component_class, [])
58+
59+
unmatched_selectors = driver.evaluate_async_script(<<~JS, COMPONENT_SELECTORS, global_ignored_selectors, ignored_selectors)
60+
const [componentSelectors, globalIgnoredSelectors, ignoredSelectors, callback] = arguments;
61+
const root = document.querySelector('.preview-wrap > *');
62+
63+
const ignoreClass = (className) => {
64+
return(
65+
globalIgnoredSelectors.includes(className) ||
66+
ignoredSelectors.includes(className) ||
67+
className.startsWith('octicon-')
68+
);
69+
};
70+
71+
const ignoreNode = (node) => {
72+
for (let i = 0; i < node.classList.length; i ++) {
73+
if (!ignoreClass(node.classList[i])) {
74+
return false;
75+
}
7476
}
75-
}
7677
77-
return true;
78-
};
78+
return true;
79+
};
7980
80-
const findEachNode = (node, cb) => {
81-
if (!ignoreNode(node)) {
82-
cb(node)
83-
}
84-
85-
for (const child of node.children) {
86-
findEachNode(child, cb);
87-
}
88-
};
81+
const findEachNode = (node, cb) => {
82+
if (!ignoreNode(node)) {
83+
cb(node)
84+
}
8985
90-
const nodeMatchesAtLeastOneComponentSelector = (node) => {
91-
for (const componentSelector of componentSelectors) {
92-
try {
93-
if (node.matches(componentSelector) || node.querySelectorAll(`:scope > ${componentSelector}`).length > 0) {
94-
return true;
86+
for (const child of node.children) {
87+
findEachNode(child, cb);
88+
}
89+
};
90+
91+
const nodeMatchesAtLeastOneComponentSelector = (node) => {
92+
for (const componentSelector of componentSelectors) {
93+
try {
94+
if (node.matches(componentSelector) || node.querySelectorAll(`:scope > ${componentSelector}`).length > 0) {
95+
return true;
96+
}
97+
} catch {
9598
}
96-
} catch {
9799
}
98-
}
99100
100-
return false;
101-
}
101+
return false;
102+
}
102103
103-
let unmatchedClasses = [];
104+
let unmatchedClasses = [];
104105
105-
findEachNode(root, (node) => {
106-
if (!nodeMatchesAtLeastOneComponentSelector(node)) {
107-
for (className of node.classList) {
108-
if (!ignoreClass(className)) {
109-
unmatchedClasses.push(className);
106+
findEachNode(root, (node) => {
107+
if (!nodeMatchesAtLeastOneComponentSelector(node)) {
108+
for (className of node.classList) {
109+
if (!ignoreClass(className)) {
110+
unmatchedClasses.push(className);
111+
}
110112
}
111113
}
112-
}
113-
});
114+
});
114115
115-
const result = Array.from(new Set(unmatchedClasses));
116-
callback(result);
117-
JS
116+
const result = Array.from(new Set(unmatchedClasses));
117+
callback(result);
118+
JS
118119

119-
assert unmatched_selectors.empty?, unmatched_selectors_message(component_class, unmatched_selectors)
120+
assert unmatched_selectors.empty?, unmatched_selectors_message(component_class, unmatched_selectors)
121+
end
120122
end
121123
end
122124
end

0 commit comments

Comments
 (0)