@@ -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