11package com .jenkinsci .plugins .badge .dsl ;
22
3+ import static org .awaitility .Awaitility .await ;
34import static org .junit .jupiter .api .Assertions .assertEquals ;
45import static org .junit .jupiter .api .Assertions .assertTrue ;
56
7+ import java .util .Objects ;
68import java .util .UUID ;
9+ import java .util .concurrent .TimeUnit ;
710import jenkins .model .Jenkins ;
811import org .apache .commons .lang .StringUtils ;
912import org .htmlunit .html .DomElement ;
@@ -43,8 +46,11 @@ void iconWithLink() throws Throwable {
4346
4447 try (JenkinsRule .WebClient webClient = r .createWebClient ()) {
4548 HtmlPage overview = webClient .getPage (job );
46- DomElement badge =
47- overview .querySelector ("#jenkins-builds .app-builds-container__item__inner__controls a" );
49+ DomElement badge = await ().atMost (5 , TimeUnit .SECONDS )
50+ .until (
51+ () -> overview .querySelector (
52+ "#jenkins-builds .app-builds-container__item__inner__controls a" ),
53+ Objects ::nonNull );
4854 DomElement icon = badge .getLastElementChild ();
4955
5056 assertEquals ("a" , badge .getTagName ());
@@ -67,8 +73,11 @@ void iconWithoutLink() throws Throwable {
6773
6874 try (JenkinsRule .WebClient webClient = r .createWebClient ()) {
6975 HtmlPage overview = webClient .getPage (job );
70- DomElement badge =
71- overview .querySelector ("#jenkins-builds .app-builds-container__item__inner__controls span" );
76+ DomElement badge = await ().atMost (5 , TimeUnit .SECONDS )
77+ .until (
78+ () -> overview .querySelector (
79+ "#jenkins-builds .app-builds-container__item__inner__controls span" ),
80+ Objects ::nonNull );
7281 DomElement icon = badge .getLastElementChild ();
7382
7483 assertEquals ("svg" , icon .getTagName ());
@@ -89,8 +98,11 @@ void textWithLink() throws Throwable {
8998
9099 try (JenkinsRule .WebClient webClient = r .createWebClient ()) {
91100 HtmlPage overview = webClient .getPage (job );
92- DomElement badge =
93- overview .querySelector ("#jenkins-builds .app-builds-container__item__inner__controls a" );
101+ DomElement badge = await ().atMost (5 , TimeUnit .SECONDS )
102+ .until (
103+ () -> overview .querySelector (
104+ "#jenkins-builds .app-builds-container__item__inner__controls a" ),
105+ Objects ::nonNull );
94106
95107 assertEquals ("a" , badge .getTagName ());
96108
@@ -109,8 +121,11 @@ void textWithoutLink() throws Throwable {
109121
110122 try (JenkinsRule .WebClient webClient = r .createWebClient ()) {
111123 HtmlPage overview = webClient .getPage (job );
112- DomElement badge =
113- overview .querySelector ("#jenkins-builds .app-builds-container__item__inner__controls span" );
124+ DomElement badge = await ().atMost (5 , TimeUnit .SECONDS )
125+ .until (
126+ () -> overview .querySelector (
127+ "#jenkins-builds .app-builds-container__item__inner__controls span" ),
128+ Objects ::nonNull );
114129
115130 assertEquals ("span" , badge .getTagName ());
116131
@@ -127,8 +142,11 @@ void info() throws Throwable {
127142
128143 try (JenkinsRule .WebClient webClient = r .createWebClient ()) {
129144 HtmlPage overview = webClient .getPage (job );
130- DomElement badge =
131- overview .querySelector ("#jenkins-builds .app-builds-container__item__inner__controls span" );
145+ DomElement badge = await ().atMost (5 , TimeUnit .SECONDS )
146+ .until (
147+ () -> overview .querySelector (
148+ "#jenkins-builds .app-builds-container__item__inner__controls span" ),
149+ Objects ::nonNull );
132150 DomElement icon = badge .getLastElementChild ();
133151
134152 assertEquals ("svg" , icon .getTagName ());
@@ -147,8 +165,11 @@ void warning() throws Throwable {
147165
148166 try (JenkinsRule .WebClient webClient = r .createWebClient ()) {
149167 HtmlPage overview = webClient .getPage (job );
150- DomElement badge =
151- overview .querySelector ("#jenkins-builds .app-builds-container__item__inner__controls span" );
168+ DomElement badge = await ().atMost (5 , TimeUnit .SECONDS )
169+ .until (
170+ () -> overview .querySelector (
171+ "#jenkins-builds .app-builds-container__item__inner__controls span" ),
172+ Objects ::nonNull );
152173 DomElement icon = badge .getLastElementChild ();
153174
154175 assertEquals ("svg" , icon .getTagName ());
@@ -167,8 +188,11 @@ void error() throws Throwable {
167188
168189 try (JenkinsRule .WebClient webClient = r .createWebClient ()) {
169190 HtmlPage overview = webClient .getPage (job );
170- DomElement badge =
171- overview .querySelector ("#jenkins-builds .app-builds-container__item__inner__controls span" );
191+ DomElement badge = await ().atMost (5 , TimeUnit .SECONDS )
192+ .until (
193+ () -> overview .querySelector (
194+ "#jenkins-builds .app-builds-container__item__inner__controls span" ),
195+ Objects ::nonNull );
172196 DomElement icon = badge .getLastElementChild ();
173197
174198 assertEquals ("svg" , icon .getTagName ());
@@ -195,8 +219,11 @@ void remove() throws Throwable {
195219
196220 try (JenkinsRule .WebClient webClient = r .createWebClient ()) {
197221 HtmlPage overview = webClient .getPage (job );
198- DomElement badge =
199- overview .querySelector ("#jenkins-builds .app-builds-container__item__inner__controls" );
222+ DomElement badge = await ().atMost (5 , TimeUnit .SECONDS )
223+ .until (
224+ () -> overview .querySelector (
225+ "#jenkins-builds .app-builds-container__item__inner__controls" ),
226+ Objects ::nonNull );
200227 assertEquals (0 , badge .getElementsByTagName ("span" ).size ());
201228 }
202229 }
0 commit comments