screenshot.js 2.1 KB

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