UNPKG

2.17 kBJavaScriptView Raw
1"use strict";
2
3var should = require("should");
4var BrowserStack = require("../lib/browserstack");
5var util = require("./util");
6
7var username = util.browserStack.username;
8var password = util.browserStack.password;
9
10if (!username || !password) {
11 throw new Error("Please set BROWSERSTACK_USERNAME and BROWSERSTACK_KEY environment variables.");
12}
13
14describe("Screenshot API", function() {
15 this.timeout(300000); // 300s
16
17 var client;
18
19 beforeEach(function() {
20 client = BrowserStack.createScreenshotClient({
21 username: username,
22 password: password
23 });
24 });
25
26 it("should list browsers", function(done) {
27 client.getBrowsers(function(err, browsers) {
28 should.ifError(err);
29
30 browsers.should.be.an.Array().and.not.be.empty();
31 browsers.map(util.validateBrowserObject);
32
33 done(err);
34 });
35 });
36
37 it("should generate screenshots for multiple browsers", function(done) {
38 var options = {
39 url: "http://www.example.com",
40 browsers: ["40.0", "41.0", "42.0"].map(function(v) {
41 return {
42 os: "Windows",
43 os_version: "7",
44 browser: "chrome",
45 browser_version: v
46 };
47 })
48 };
49
50 client.generateScreenshots(options, function(err, job) {
51 should.ifError(err);
52 util.validateScreenshotJob(job);
53
54 util.pollScreenshotWorker(client, job, function(err, isRunning) {
55 if (!err && !isRunning) {
56
57 // this is highly dependent on demand and queue time at BrowserStack;
58 // little point in stalling the test run waiting for this job to complete
59
60 // print warning in console for user to decide
61 console.warn("\t[WARN] worker %s did not run within timeout", job.job_id);
62 }
63
64 done(err);
65 });
66 });
67 });
68
69 it("should fetch a screenshot job", function(done) {
70 var options = {
71 url: "http://www.example.com",
72 browsers: [
73 {
74 os: "Windows",
75 os_version: "7",
76 browser: "chrome",
77 browser_version: "42.0"
78 }
79 ]
80 };
81
82 client.generateScreenshots(options, function(err, job) {
83 should.ifError(err);
84 util.validateScreenshotJob(job);
85
86 client.getJob(job.job_id, function(err, job) {
87 if (!err) {
88 util.validateScreenshotJob(job);
89 }
90
91 done(err);
92 });
93 });
94 });
95});