|
3 | 3 | import com.saucelabs.saucebindings.Browser;
|
4 | 4 | import com.saucelabs.saucebindings.CITools;
|
5 | 5 | import com.saucelabs.saucebindings.GitManager;
|
| 6 | +import com.saucelabs.saucebindings.JobVisibility; |
| 7 | +import com.saucelabs.saucebindings.PageLoadStrategy; |
| 8 | +import com.saucelabs.saucebindings.Prerun; |
6 | 9 | import com.saucelabs.saucebindings.SaucePlatform;
|
7 | 10 | import com.saucelabs.saucebindings.SystemManager;
|
| 11 | +import com.saucelabs.saucebindings.UnhandledPromptBehavior; |
| 12 | +import lombok.SneakyThrows; |
8 | 13 | import org.junit.Test;
|
9 | 14 | import org.openqa.selenium.MutableCapabilities;
|
| 15 | +import org.yaml.snakeyaml.Yaml; |
10 | 16 |
|
| 17 | +import java.io.File; |
| 18 | +import java.io.FileInputStream; |
| 19 | +import java.io.InputStream; |
| 20 | +import java.time.Duration; |
| 21 | +import java.util.ArrayList; |
11 | 22 | import java.util.HashMap;
|
| 23 | +import java.util.List; |
12 | 24 | import java.util.Map;
|
13 | 25 |
|
14 | 26 | import static org.junit.Assert.assertEquals;
|
@@ -155,4 +167,103 @@ public void requiresTestName() {
|
155 | 167 | // Expected result
|
156 | 168 | }
|
157 | 169 | }
|
| 170 | + |
| 171 | + @Test |
| 172 | + public void setsCapabilitiesFromMap() { |
| 173 | + Map<String, Object> map = serialize("visualValues"); |
| 174 | + VisualOptions visualOptions = new VisualOptions("Required Test Name"); |
| 175 | + |
| 176 | + visualOptions.mergeCapabilities(map); |
| 177 | + |
| 178 | + Map<String, Object> diffOptions = new HashMap<>(); |
| 179 | + diffOptions.put("structure", true); |
| 180 | + diffOptions.put("layout", true); |
| 181 | + diffOptions.put("style", true); |
| 182 | + diffOptions.put("content", true); |
| 183 | + diffOptions.put("minLayoutPosition", 4); |
| 184 | + diffOptions.put("minLayoutDimension", 10); |
| 185 | + |
| 186 | + Map<String, Object> iframesOptions = new HashMap<>(); |
| 187 | + iframesOptions.put("maxFrames", "Infinity"); |
| 188 | + |
| 189 | + Map<String, Object> customData = new HashMap<>(); |
| 190 | + customData.put("foo", "foo"); |
| 191 | + customData.put("bar", "bar"); |
| 192 | + |
| 193 | + List<String> args = new ArrayList<>(); |
| 194 | + args.add("--silent"); |
| 195 | + args.add("-a"); |
| 196 | + args.add("-q"); |
| 197 | + |
| 198 | + Map<Prerun, Object> prerun = new HashMap<>(); |
| 199 | + prerun.put(Prerun.EXECUTABLE, "http://url.to/your/executable.exe"); |
| 200 | + prerun.put(Prerun.ARGS, args); |
| 201 | + prerun.put(Prerun.BACKGROUND, false); |
| 202 | + prerun.put(Prerun.TIMEOUT, 120); |
| 203 | + |
| 204 | + List<String> tags = new ArrayList<>(); |
| 205 | + tags.add("foo"); |
| 206 | + tags.add("bar"); |
| 207 | + tags.add("foobar"); |
| 208 | + |
| 209 | + SauceOptions sauceOptions = visualOptions.getSauceOptions(); |
| 210 | + |
| 211 | + assertEquals(Browser.FIREFOX, sauceOptions.getBrowserName()); |
| 212 | + assertEquals("68", sauceOptions.getBrowserVersion()); |
| 213 | + assertEquals(SaucePlatform.MAC_HIGH_SIERRA, sauceOptions.getPlatformName()); |
| 214 | + assertEquals(true, sauceOptions.getAcceptInsecureCerts()); |
| 215 | + assertEquals(PageLoadStrategy.EAGER, sauceOptions.getPageLoadStrategy()); |
| 216 | + assertEquals(true, sauceOptions.getSetWindowRect()); |
| 217 | + assertEquals(UnhandledPromptBehavior.ACCEPT, sauceOptions.getUnhandledPromptBehavior()); |
| 218 | + assertEquals(true, sauceOptions.getStrictFileInteractability()); |
| 219 | + assertEquals(Duration.ofSeconds(1), sauceOptions.getImplicitWaitTimeout()); |
| 220 | + assertEquals(Duration.ofSeconds(59), sauceOptions.getPageLoadTimeout()); |
| 221 | + assertEquals(Duration.ofSeconds(29), sauceOptions.getScriptTimeout()); |
| 222 | + assertEquals(true, sauceOptions.sauce().getAvoidProxy()); |
| 223 | + assertEquals("Sample Build Name", sauceOptions.sauce().getBuild()); |
| 224 | + assertEquals(true, sauceOptions.sauce().getCapturePerformance()); |
| 225 | + assertEquals("71", sauceOptions.sauce().getChromedriverVersion()); |
| 226 | + assertEquals(Integer.valueOf(2), sauceOptions.sauce().getCommandTimeout()); |
| 227 | + assertEquals(customData, sauceOptions.sauce().getCustomData()); |
| 228 | + assertEquals(true, sauceOptions.sauce().getExtendedDebugging()); |
| 229 | + assertEquals(Integer.valueOf(3), sauceOptions.sauce().getIdleTimeout()); |
| 230 | + assertEquals("3.141.0", sauceOptions.sauce().getIedriverVersion()); |
| 231 | + assertEquals(Integer.valueOf(300), sauceOptions.sauce().getMaxDuration()); |
| 232 | + assertEquals("Sample Test Name", sauceOptions.sauce().getName()); |
| 233 | + assertEquals("Mommy", sauceOptions.sauce().getParentTunnel()); |
| 234 | + assertEquals(prerun, sauceOptions.sauce().getPrerun()); |
| 235 | + assertEquals(Integer.valueOf(0), sauceOptions.sauce().getPriority()); |
| 236 | + assertEquals(JobVisibility.TEAM, sauceOptions.sauce().getJobVisibility()); |
| 237 | + assertEquals(false, sauceOptions.sauce().getRecordLogs()); |
| 238 | + assertEquals(false, sauceOptions.sauce().getRecordScreenshots()); |
| 239 | + assertEquals(false, sauceOptions.sauce().getRecordVideo()); |
| 240 | + assertEquals("10x10", sauceOptions.sauce().getScreenResolution()); |
| 241 | + assertEquals("3.141.59", sauceOptions.sauce().getSeleniumVersion()); |
| 242 | + assertEquals(tags, sauceOptions.sauce().getTags()); |
| 243 | + assertEquals("San Francisco", sauceOptions.sauce().getTimeZone()); |
| 244 | + assertEquals("tunnelname", sauceOptions.sauce().getTunnelIdentifier()); |
| 245 | + assertEquals(false, sauceOptions.sauce().getVideoUploadOnPass()); |
| 246 | + |
| 247 | + assertEquals("My Project", visualOptions.getProjectName()); |
| 248 | + assertEquals("393x786", visualOptions.getViewportSize()); |
| 249 | + assertEquals("baseBranch", visualOptions.getBaseBranch()); |
| 250 | + assertEquals(diffOptions, visualOptions.getDiffOptions()); |
| 251 | + assertEquals("#some-id, .some-selector", visualOptions.getIgnore()); |
| 252 | + assertTrue(visualOptions.getFailOnNewStates()); |
| 253 | + assertTrue(visualOptions.getAlwaysAcceptBaseBranch()); |
| 254 | + assertTrue(visualOptions.getDisableBranchBaseline()); |
| 255 | + assertTrue(visualOptions.getScrollAndStitchScreenshots()); |
| 256 | + assertTrue(visualOptions.getDisableCORS()); |
| 257 | + assertTrue(visualOptions.getIframes()); |
| 258 | + assertEquals(iframesOptions, visualOptions.getIframesOptions()); |
| 259 | + } |
| 260 | + |
| 261 | + @SneakyThrows |
| 262 | + public Map<String, Object> serialize(String key) { |
| 263 | + InputStream input = new FileInputStream(new File("src/test/java/com/saucelabs/saucebindings/options.yml")); |
| 264 | + Yaml yaml = new Yaml(); |
| 265 | + Map<String, Object> data = yaml.load(input); |
| 266 | + return (Map<String, Object>) data.get(key); |
| 267 | + } |
| 268 | + |
158 | 269 | }
|
0 commit comments