@@ -3,7 +3,9 @@ const ngrok = require("ngrok")
const https = require ( "https" )
const querystring = require ( "querystring" )
// 91d23a26-a8be-4a7d-b1a8-ae56719d8699
const PORT = 9007
const SAUCELAB_USERNAME = "st.kao.05"
const SAUCELAB_API_TOKEN = "91d23a26-a8be-4a7d-b1a8-ae56719d8699"
const setupProxy = ( ) => {
return new Promise ( ( resolve , reject ) => {
@@ -19,28 +21,29 @@ const setupProxy = () => {
reject ( err )
} )
ngrok . connect ( 9002 )
ngrok . connect ( PORT )
} )
}
const startSauce = testurl => {
const startSauce = proxyURL => {
return new Promise ( ( resolve , reject ) => {
try {
const testURL = proxyURL + "/test/spec_runner.html"
const body = JSON . stringify ( {
platforms : [
[ "Windows 8" , "internet explorer" , "10" ] ,
[ "OS X 10.8" , "safari" , "6" ]
[ "Windows 8" , "internet explorer" , "10" ]
] ,
url : testurl ,
framework : "custom "
url : testURL ,
framework : "jasmine "
} )
const opt = {
hostname : "saucelabs.com" ,
port : 443 ,
path : " /rest/v1/st.kao.05 /js-tests" ,
path : ` /rest/v1/${ SAUCELAB_USERNAME } /js-tests` ,
method : "POST" ,
auth : "st.kao.05:91d23a26-a8be-4a7d-b1a8-ae56719d8699" ,
auth : ` ${ SAUCELAB_USERNAME } : ${ SAUCELAB_API_TOKEN } ` ,
headers : {
"Content-Type" : "application/json" ,
"Content-Length" : Buffer . byteLength ( body )
@@ -49,7 +52,7 @@ const startSauce = testurl => {
const req = https . request ( opt , res => {
res . setEncoding ( "utf8" )
res . on ( "data" , function ( chunk ) {
res . on ( "data" , chunk => {
if ( res . statusCode === 200 ) {
return resolve ( chunk )
}
@@ -62,29 +65,45 @@ const startSauce = testurl => {
} )
} )
req . on ( "error" , function ( e ) {
req . on ( "error" , e => {
reject ( e )
} )
req . on ( "timeout" , function ( ) {
req . on ( "timeout" , ( ) => {
reject ( "Error: Saucelab request timeout" )
} )
req . write ( body )
req . end ( )
} catch ( e ) {
reject ( e )
}
} )
}
gulp . task ( "sauce" , ( ) => {
console . log ( "Starting ngrok" )
var WebpackDevServer = require ( "webpack-dev-server" )
var webpack = require ( "webpack" )
const wpconfig = require ( "./webpack.config.js" )
return setupProxy ( ) . then ( url => {
return startSauce ( url )
} ) . then ( res => {
console . log ( "Saucelab test start successfully." , res )
var compiler = webpack ( wpconfig )
var server = new WebpackDevServer ( compiler , {
hot : true ,
disableHostCheck : true
} )
server . listen ( PORT )
console . log ( "Starting ngrok" )
return setupProxy ( )
. then ( url => {
console . log ( "Test URL: " , url )
return startSauce ( url )
} )
. then ( res => {
console . log ( "Saucelab test started. Running indefinitely" , res )
return new Promise ( ( resovle , reject ) => {
} )
} )
} )