UNPKG

strider-sauce

Version:

Sauce Labs / Selenium support for Strider

102 lines (91 loc) 3.42 kB
define( ['apres', 'jquery'], function(apres, $) { var SauceConfigWidget = function(elem, params) { var params = apres.controller().params; function message(message, classes) { elem.find("div.alert").removeClass().addClass("alert " + classes).html(message).show(); } function message_hide() { elem.find("div.alert").hide(); } function load(url) { elem.find('.details').addClass('hide'); elem.find('.alert').removeClass().addClass("alert alert-info").html("Loading ..."); $.ajax({ url: "/api/sauce", type: "GET", data: {url: url}, dataType: "json", success: function (data, ts, xhr) { var browsers = data.results.sauce_browsers || []; setBrowsers(browsers); elem.find('.sauce-username').val(data.results.sauce_username); elem.find('.sauce-access-key').val(data.results.sauce_access_key); elem.find('.details').show(); message_hide(); }, error: function(xhr, ts, e) { if (xhr && xhr.responseText) { var data = $.parseJSON(xhr.responseText); message("Error loading Sauce config: " + data.errors[0], "alert-error"); } else { message("Error loading Sauce config: " + e, "alert-error"); } } }); } function getBrowsers() { var checked = elem.find("input:checked"); var sauceBrowsers = []; for (var i = 0; i < checked.length; i++) { var str = $(checked[i]).val(); var parts = str.split('-'); var platform = parts[0]; var browser = parts[1]; var browserVerson = parts[2] || ''; sauceBrowsers.push({ platform: platform, browserName: browser, version: browserVerson }); } return sauceBrowsers; } function setBrowsers(sauceBrowsers) { for (var i = 0; i < sauceBrowsers.length; i++) { var o = sauceBrowsers[i]; var searchValue = o.platform + "-" + o.browserName + "-" + o.version; elem.find("input[value='"+searchValue+"']").attr('checked', 'checked'); } } this.events = { "click #sauce-save": function() { var sauce_browsers = getBrowsers(); var sauce_username = elem.find(".sauce-username").val(); var sauce_access_key = elem.find(".sauce-access-key").val(); $.ajax("/api/sauce", { data: { url:params.repo_url, sauce_username:sauce_username, sauce_access_key:sauce_access_key, sauce_browsers: JSON.stringify(sauce_browsers) }, error: function(xhr, ts, e) { console.log(e); message("Error saving sauce credentials.", "alert-error"); }, success: function(data, ts, xhr) { message("Sauce credentials saved.", "alert-success"); }, type: "POST", }); }, }; // There is a global "repo" object which is generated by the server var repo_url = apres.controller().params.repo_url; load(repo_url); }; return SauceConfigWidget; } );