Skip to content

Commit

Permalink
ci: add ios simulator tests (#1794)
Browse files Browse the repository at this point in the history
  • Loading branch information
niklasvh committed Apr 9, 2019
1 parent 7775d3c commit a63cb3c
Show file tree
Hide file tree
Showing 6 changed files with 1,762 additions and 19 deletions.
117 changes: 117 additions & 0 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,123 @@ jobs:
inputs:
PathtoPublish: 'tmp/reftests'
artifactName: ReftestResults
- job: Browser_Tests_OSX_Safari_IOS_9
displayName: iOS Simulator Safari 9
pool:
vmImage: 'macOS-10.13'
variables:
TARGET_BROWSER: Safari_IOS_9
dependsOn: Build
condition: succeeded()
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- task: Npm@0
inputs:
command: install
- task: DownloadBuildArtifacts@0
displayName: 'Download library'
inputs:
artifactName: dist
downloadPath: $(System.DefaultWorkingDirectory)
- task: DownloadBuildArtifacts@0
displayName: 'Download testrunner'
inputs:
artifactName: build
downloadPath: $(System.DefaultWorkingDirectory)
- script: npm run karma
displayName: 'Run Safari tests - Safari IOS'
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testRunner: JUnit
testResultsFiles: 'tmp/junit/*.xml'
- task: PublishBuildArtifacts@1
displayName: Upload Screenshots
condition: succeededOrFailed()
inputs:
PathtoPublish: 'tmp/reftests'
artifactName: ReftestResults
- job: Browser_Tests_OSX_Safari_IOS_10
displayName: iOS Simulator Safari 10
pool:
vmImage: 'macOS-10.13'
variables:
TARGET_BROWSER: Safari_IOS_10
dependsOn: Build
condition: succeeded()
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- task: Npm@0
inputs:
command: install
- task: DownloadBuildArtifacts@0
displayName: 'Download library'
inputs:
artifactName: dist
downloadPath: $(System.DefaultWorkingDirectory)
- task: DownloadBuildArtifacts@0
displayName: 'Download testrunner'
inputs:
artifactName: build
downloadPath: $(System.DefaultWorkingDirectory)
- script: npm run karma
displayName: 'Run Safari tests - Safari IOS'
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testRunner: JUnit
testResultsFiles: 'tmp/junit/*.xml'
- task: PublishBuildArtifacts@1
displayName: Upload Screenshots
condition: succeededOrFailed()
inputs:
PathtoPublish: 'tmp/reftests'
artifactName: ReftestResults
- job: Browser_Tests_OSX_Safari_IOS_11
displayName: iOS Simulator Safari 11
pool:
vmImage: 'macOS-10.13'
variables:
TARGET_BROWSER: Safari_IOS_11
dependsOn: Build
condition: succeeded()
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- task: Npm@0
inputs:
command: install
- task: DownloadBuildArtifacts@0
displayName: 'Download library'
inputs:
artifactName: dist
downloadPath: $(System.DefaultWorkingDirectory)
- task: DownloadBuildArtifacts@0
displayName: 'Download testrunner'
inputs:
artifactName: build
downloadPath: $(System.DefaultWorkingDirectory)
- script: npm run karma
displayName: 'Run Safari tests - Safari IOS'
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testRunner: JUnit
testResultsFiles: 'tmp/junit/*.xml'
- task: PublishBuildArtifacts@1
displayName: Upload Screenshots
condition: succeededOrFailed()
inputs:
PathtoPublish: 'tmp/reftests'
artifactName: ReftestResults
- job: Browser_Tests_OSX_Safari_Stable
displayName: OSX Safari Stable
pool:
Expand Down
65 changes: 65 additions & 0 deletions karma.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,29 @@
// Generated on Sat Aug 05 2017 23:42:26 GMT+0800 (Malay Peninsula Standard Time)

const path = require('path');
const simctl = require('node-simctl');
const iosSimulator = require('appium-ios-simulator');
const port = 9876;

const log = require('karma/lib/logger').create('launcher:MobileSafari');

module.exports = function(config) {
const launchers = {
Safari_IOS_9: {
base: 'MobileSafari',
name: 'iPhone 5s',
sdk: '9.0'
},
Safari_IOS_10: {
base: 'MobileSafari',
name: 'iPhone 5s',
sdk: '10.0'
},
Safari_IOS_11: {
base: 'MobileSafari',
name: 'iPhone 5s',
sdk: '11.4'
},
SauceLabs_IE9: {
base: 'SauceLabs',
browserName: 'internet explorer',
Expand Down Expand Up @@ -97,6 +117,48 @@ module.exports = function(config) {

injectTypedArrayPolyfills.$inject = ['config.files'];

const MobileSafari = function(baseBrowserDecorator, args) {
if(process.platform !== "darwin"){
log.error("This launcher only works in MacOS.");
this._process.kill();
return;
}
baseBrowserDecorator(this);
this.on('start', url => {
simctl.getDevices().then(devices => {
const d = devices[args.sdk].find(d => {
return d.name === args.name;
});

if (!d) {
log.error(`No device found for sdk ${args.sdk} with name ${args.name}`);
this._process.kill();
return;
}

return iosSimulator.getSimulator(d.udid).then(device => {
return simctl.bootDevice(d.udid).then(() => device);
}).then(device => {
return device.waitForBoot(60 * 5 * 1000).then(() => {
return device.openUrl(url);
});
});
}).catch(e => {
console.log('err,', e);
});
});
};

MobileSafari.prototype = {
name: 'MobileSafari',
DEFAULT_CMD: {
darwin: '/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator',
},
ENV_CMD: null,
};

MobileSafari.$inject = ['baseBrowserDecorator', 'args'];

config.set({

// base path that will be used to resolve all patterns (eg. files, exclude)
Expand All @@ -120,6 +182,9 @@ module.exports = function(config) {
'karma-*',
{
'framework:inline-mocha-fix': ['factory', injectTypedArrayPolyfills]
},
{
'launcher:MobileSafari': ['type', MobileSafari]
}
],

Expand Down
Loading

0 comments on commit a63cb3c

Please sign in to comment.