|
18 | 18 |
|
19 | 19 | import com.microsoft.playwright.assertions.LocatorAssertions; |
20 | 20 | import com.microsoft.playwright.assertions.PlaywrightAssertions; |
| 21 | +import com.microsoft.playwright.assertions.LocatorAssertions.ContainsClassOptions; |
| 22 | + |
21 | 23 | import org.junit.jupiter.api.Test; |
22 | 24 | import org.opentest4j.AssertionFailedError; |
23 | 25 |
|
@@ -1109,4 +1111,49 @@ void defaultTimeoutZeroHasTextPass() { |
1109 | 1111 | // Restore default. |
1110 | 1112 | PlaywrightAssertions.setDefaultAssertionTimeout(5_000); |
1111 | 1113 | } |
| 1114 | + |
| 1115 | + @Test |
| 1116 | + void containsClassPass() { |
| 1117 | + page.setContent("<div class='foo bar baz'></div>"); |
| 1118 | + Locator locator = page.locator("div"); |
| 1119 | + assertThat(locator).containsClass(""); |
| 1120 | + assertThat(locator).containsClass("bar"); |
| 1121 | + assertThat(locator).containsClass("baz bar"); |
| 1122 | + assertThat(locator).containsClass(" bar foo "); |
| 1123 | + assertThat(locator).not().containsClass(" baz not-matching"); |
| 1124 | + } |
| 1125 | + |
| 1126 | + @Test |
| 1127 | + void containsClassPassWithSvgs() { |
| 1128 | + page.setContent("<svg class='c1 c2' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'></svg>"); |
| 1129 | + assertThat(page.locator("svg")).containsClass("c1"); |
| 1130 | + assertThat(page.locator("svg")).containsClass("c2 c1"); |
| 1131 | + } |
| 1132 | + |
| 1133 | + @Test |
| 1134 | + void containsClassFail() { |
| 1135 | + page.setContent("<div class='bar baz'></div>"); |
| 1136 | + AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> { |
| 1137 | + assertThat(page.locator("div")).containsClass("does-not-exist", new ContainsClassOptions().setTimeout(1000)); |
| 1138 | + }); |
| 1139 | + assertTrue(e.getMessage().contains("Locator.expect with timeout 1000ms"), e.getMessage()); |
| 1140 | + } |
| 1141 | + |
| 1142 | + @Test |
| 1143 | + void containsClassPassWithArray() { |
| 1144 | + page.setContent("<div class='foo'></div><div class='hello bar'></div><div class='baz'></div>"); |
| 1145 | + Locator locator = page.locator("div"); |
| 1146 | + assertThat(locator).containsClass(asList("foo", "hello", "baz")); |
| 1147 | + assertThat(locator).not().hasClass(new String[]{"not-there", "hello", "baz"}); // Class not there |
| 1148 | + assertThat(locator).not().hasClass(new String[]{"foo", "hello"}); // length mismatch |
| 1149 | + } |
| 1150 | + |
| 1151 | + @Test |
| 1152 | + void containsClassFailWithArray() { |
| 1153 | + page.setContent("<div class='foo'></div><div class='bar'></div><div class='bar'></div>"); |
| 1154 | + AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> { |
| 1155 | + assertThat(page.locator("div")).containsClass(asList("foo", "bar", "baz"), new ContainsClassOptions().setTimeout(1000)); |
| 1156 | + }); |
| 1157 | + assertTrue(e.getMessage().contains("Locator.expect with timeout 1000ms"), e.getMessage()); |
| 1158 | + } |
1112 | 1159 | } |
0 commit comments