Skip to content

Commit

Permalink
Revert "Remove BrowserStack"
Browse files Browse the repository at this point in the history
  • Loading branch information
XhmikosR committed Apr 12, 2023
1 parent ce42292 commit 31d7cb5
Show file tree
Hide file tree
Showing 6 changed files with 591 additions and 96 deletions.
46 changes: 46 additions & 0 deletions .github/workflows/browserstack.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: BrowserStack

on:
push:
branches:
- "**"
- "!dependabot/**"
workflow_dispatch:

env:
FORCE_COLOR: 2
NODE: 18

permissions:
contents: read

jobs:
browserstack:
runs-on: ubuntu-latest
if: github.repository == 'twbs/bootstrap'
timeout-minutes: 30

steps:
- name: Clone repository
uses: actions/checkout@v3
with:
persist-credentials: false

- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: "${{ env.NODE }}"
cache: npm

- name: Install npm dependencies
run: npm ci

- name: Run dist
run: npm run dist

- name: Run BrowserStack tests
run: npm run js-test-cloud
env:
BROWSER_STACK_ACCESS_KEY: "${{ secrets.BROWSER_STACK_ACCESS_KEY }}"
BROWSER_STACK_USERNAME: "${{ secrets.BROWSER_STACK_USERNAME }}"
GITHUB_SHA: "${{ github.sha }}"
2 changes: 1 addition & 1 deletion .github/workflows/lambdatest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
run: npm run dist

- name: Run LambdaTest tests
run: npm run js-test-cloud
run: npm run js-test-ltcloud
env:
LT_USERNAME: "${{ secrets.LT_USERNAME }}"
LT_ACCESS_KEY: "${{ secrets.LT_ACCESS_KEY }}"
Expand Down
208 changes: 142 additions & 66 deletions js/tests/browsers.js
Original file line number Diff line number Diff line change
@@ -1,75 +1,151 @@
/* eslint-disable camelcase */

'use strict'

const browsers = {
safariMac: {
browserName: 'Safari',
browserVersion: 'latest',
'LT:Options': {
platformName: 'MacOS Monterey'
}
},
chromeMac: {
browserName: 'Chrome',
browserVersion: 'latest',
'LT:Options': {
platformName: 'MacOS Monterey'
}
},
firefoxMac: {
browserName: 'Firefox',
browserVersion: 'latest',
'LT:Options': {
platformName: 'MacOS Monterey'
}
},
chromeWin10: {
browserName: 'Chrome',
browserVersion: '60',
'LT:Options': {
platformName: 'Windows 10'
lambdaTest: {
safariMac: {
browserName: 'Safari',
browserVersion: 'latest',
'LT:Options': {
platformName: 'MacOS Monterey'
}
},
chromeMac: {
browserName: 'Chrome',
browserVersion: 'latest',
'LT:Options': {
platformName: 'MacOS Monterey'
}
},
firefoxMac: {
browserName: 'Firefox',
browserVersion: 'latest',
'LT:Options': {
platformName: 'MacOS Monterey'
}
},
chromeWin10: {
browserName: 'Chrome',
browserVersion: '60',
'LT:Options': {
platformName: 'Windows 10'
}
},
firefoxWin10: {
browserName: 'Firefox',
browserVersion: '60',
'LT:Options': {
platformName: 'Windows 10'
}
},
chromeWin10Latest: {
browserName: 'Chrome',
browserVersion: 'latest',
'LT:Options': {
platformName: 'Windows 10'
}
},
firefoxWin10Latest: {
browserName: 'Firefox',
browserVersion: 'latest',
'LT:Options': {
platformName: 'Windows 10'
}
},
iphone11: {
platformName: 'ios',
platformVersion: '15',
browserName: 'Safari',
deviceName: 'iPhone 13',
isRealMobile: true
},
iphone14: {
platformName: 'ios',
platformVersion: '16',
browserName: 'Safari',
deviceName: 'iPhone 14',
isRealMobile: true
},
pixel6: {
platformName: 'android',
platformVersion: '12',
browserName: 'Chrome',
deviceName: 'Pixel 6',
isRealMobile: true
}
},
firefoxWin10: {
browserName: 'Firefox',
browserVersion: '60',
'LT:Options': {
platformName: 'Windows 10'
browserStack: {
safariMac: {
base: 'BrowserStack',
os: 'OS X',
os_version: 'Catalina',
browser: 'Safari',
browser_version: 'latest'
},
chromeMac: {
base: 'BrowserStack',
os: 'OS X',
os_version: 'Catalina',
browser: 'Chrome',
browser_version: 'latest'
},
firefoxMac: {
base: 'BrowserStack',
os: 'OS X',
os_version: 'Catalina',
browser: 'Firefox',
browser_version: 'latest'
},
chromeWin10: {
base: 'BrowserStack',
os: 'Windows',
os_version: '10',
browser: 'Chrome',
browser_version: '60'
},
firefoxWin10: {
base: 'BrowserStack',
os: 'Windows',
os_version: '10',
browser: 'Firefox',
browser_version: '60'
},
chromeWin10Latest: {
base: 'BrowserStack',
os: 'Windows',
os_version: '10',
browser: 'Chrome',
browser_version: 'latest'
},
firefoxWin10Latest: {
base: 'BrowserStack',
os: 'Windows',
os_version: '10',
browser: 'Firefox',
browser_version: 'latest'
},
iphone7: {
base: 'BrowserStack',
os: 'ios',
os_version: '12.0',
device: 'iPhone 7',
real_mobile: true
},
iphone12: {
base: 'BrowserStack',
os: 'ios',
os_version: '14.0',
device: 'iPhone 12',
real_mobile: true
},
pixel2: {
base: 'BrowserStack',
os: 'android',
os_version: '8.0',
device: 'Google Pixel 2',
real_mobile: true
}
},
chromeWin10Latest: {
browserName: 'Chrome',
browserVersion: 'latest',
'LT:Options': {
platformName: 'Windows 10'
}
},
firefoxWin10Latest: {
browserName: 'Firefox',
browserVersion: 'latest',
'LT:Options': {
platformName: 'Windows 10'
}
},
iphone11: {
platformName: 'ios',
platformVersion: '15',
browserName: 'Safari',
deviceName: 'iPhone 13',
isRealMobile: true
},
iphone14: {
platformName: 'ios',
platformVersion: '16',
browserName: 'Safari',
deviceName: 'iPhone 14',
isRealMobile: true
},
pixel6: {
platformName: 'android',
platformVersion: '12',
browserName: 'Chrome',
deviceName: 'Pixel 6',
isRealMobile: true
}
}

Expand Down
66 changes: 40 additions & 26 deletions js/tests/karma.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const { browsers } = require('./browsers.js')

const ENV = process.env
const LAMBDATEST = Boolean(ENV.LAMBDATEST)
const BROWSERSTACK = Boolean(ENV.BROWSERSTACK)
const DEBUG = Boolean(ENV.DEBUG)
const JQUERY_TEST = Boolean(ENV.JQUERY)

Expand Down Expand Up @@ -79,7 +80,7 @@ const config = {
'node_modules/hammer-simulator/index.js',
{
pattern: 'js/tests/unit/**/!(jquery).spec.js',
watched: !LAMBDATEST
watched: !BROWSERSTACK
}
],
preprocessors: {
Expand Down Expand Up @@ -118,38 +119,51 @@ const config = {
if (LAMBDATEST) {
config.hostname = 'localhost.lambdatest.com'

for (const key of Object.keys(browsers)) {
browsers[key].base = 'WebDriver'
browsers[key].build = `bootstrap-${ENV.GITHUB_SHA ? `${ENV.GITHUB_SHA.slice(0, 7)}-` : ''}${new Date().toISOString()}`
browsers[key].project = 'Bootstrap'

if (browsers[key].isRealMobile) {
browsers[key].config = webdriverConfigMobile
browsers[key].user = ENV.LT_USERNAME
browsers[key].accessKey = ENV.LT_ACCESS_KEY
browsers[key].tunnel = true
browsers[key].console = true
browsers[key].network = true
browsers[key].tunnelName = process.env.LT_TUNNEL_NAME || 'jasmine'
browsers[key].pseudoActivityInterval = 5000 // 5000 ms heartbeat
for (const key of Object.keys(browsers.lambdaTest)) {
browsers.lambdaTest[key].base = 'WebDriver'
browsers.lambdaTest[key].build = `bootstrap-${ENV.GITHUB_SHA ? `${ENV.GITHUB_SHA.slice(0, 7)}-` : ''}${new Date().toISOString()}`
browsers.lambdaTest[key].project = 'Bootstrap'

if (browsers.lambdaTest[key].isRealMobile) {
browsers.lambdaTest[key].config = webdriverConfigMobile
browsers.lambdaTest[key].user = ENV.LT_USERNAME
browsers.lambdaTest[key].accessKey = ENV.LT_ACCESS_KEY
browsers.lambdaTest[key].tunnel = true
browsers.lambdaTest[key].console = true
browsers.lambdaTest[key].network = true
browsers.lambdaTest[key].tunnelName = process.env.LT_TUNNEL_NAME || 'jasmine'
browsers.lambdaTest[key].pseudoActivityInterval = 5000 // 5000 ms heartbeat
} else {
browsers[key].config = webdriverConfig
browsers[key]['LT:Options'].username = ENV.LT_USERNAME
browsers[key]['LT:Options'].accessKey = ENV.LT_ACCESS_KEY
browsers[key]['LT:Options'].tunnel = true
browsers[key]['LT:Options'].console = true
browsers[key]['LT:Options'].network = true
browsers[key]['LT:Options'].tunnelName = process.env.LT_TUNNEL_NAME || 'jasmine'
browsers[key]['LT:Options'].pseudoActivityInterval = 5000 // 5000 ms heartbeat
browsers.lambdaTest[key].config = webdriverConfig
browsers.lambdaTest[key]['LT:Options'].username = ENV.LT_USERNAME
browsers.lambdaTest[key]['LT:Options'].accessKey = ENV.LT_ACCESS_KEY
browsers.lambdaTest[key]['LT:Options'].tunnel = true
browsers.lambdaTest[key]['LT:Options'].console = true
browsers.lambdaTest[key]['LT:Options'].network = true
browsers.lambdaTest[key]['LT:Options'].tunnelName = process.env.LT_TUNNEL_NAME || 'jasmine'
browsers.lambdaTest[key]['LT:Options'].pseudoActivityInterval = 5000 // 5000 ms heartbeat
}

browsers[key].retryLimit = 3
browsers.lambdaTest[key].retryLimit = 3
}

plugins.push('karma-webdriver-launcher', 'karma-jasmine-html-reporter')
config.customLaunchers = browsers
config.browsers = Object.keys(browsers)
config.customLaunchers = browsers.lambdaTest
config.browsers = Object.keys(browsers.lambdaTest)
reporters.push('kjhtml')
} else if (BROWSERSTACK) {
config.hostname = ip.address()
config.browserStack = {
username: ENV.BROWSER_STACK_USERNAME,
accessKey: ENV.BROWSER_STACK_ACCESS_KEY,
build: `bootstrap-${ENV.GITHUB_SHA ? `${ENV.GITHUB_SHA.slice(0, 7)}-` : ''}${new Date().toISOString()}`,
project: 'Bootstrap',
retryLimit: 3
}
plugins.push('karma-browserstack-launcher', 'karma-jasmine-html-reporter')
config.customLaunchers = browsers.browserStack
config.browsers = Object.keys(browsers.browserStack)
reporters.push('BrowserStack', 'kjhtml')
} else if (JQUERY_TEST) {
frameworks.push('detectBrowsers')
plugins.push(
Expand Down

0 comments on commit 31d7cb5

Please sign in to comment.