mirror of
https://github.com/twbs/bootstrap.git
synced 2025-08-13 17:14:04 +02:00
Add Lambdatest support
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -41,3 +41,4 @@ Thumbs.db
|
||||
/dist-sass/
|
||||
/js/coverage/
|
||||
/node_modules/
|
||||
.lambdatest
|
||||
|
@@ -3,75 +3,149 @@
|
||||
'use strict'
|
||||
|
||||
const browsers = {
|
||||
safariMac: {
|
||||
base: 'BrowserStack',
|
||||
os: 'OS X',
|
||||
os_version: 'Catalina',
|
||||
browser: 'Safari',
|
||||
browser_version: 'latest'
|
||||
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"
|
||||
}
|
||||
},
|
||||
iphone7: {
|
||||
platformName: 'ios',
|
||||
platformVersion: '12',
|
||||
browserName: 'Safari',
|
||||
deviceName: 'iPhone 7',
|
||||
isRealMobile: true
|
||||
},
|
||||
iphone12: {
|
||||
platformName: 'ios',
|
||||
platformVersion: '16',
|
||||
browserName: 'Safari',
|
||||
deviceName: 'iPhone 12',
|
||||
isRealMobile: true
|
||||
},
|
||||
pixel2: {
|
||||
platformName: 'android',
|
||||
platformVersion: '12',
|
||||
browserName: 'Chrome',
|
||||
deviceName: 'Google Pixel 6',
|
||||
isRealMobile: true
|
||||
}
|
||||
},
|
||||
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
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -9,10 +9,21 @@ const replace = require('@rollup/plugin-replace')
|
||||
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)
|
||||
|
||||
const webdriverConfig = {
|
||||
hostname: 'hub.lambdatest.com',
|
||||
port: 80
|
||||
}
|
||||
|
||||
const webdriverConfigMobile = {
|
||||
hostname: 'mobile-hub.lambdatest.com',
|
||||
port: 80
|
||||
}
|
||||
|
||||
const frameworks = [
|
||||
'jasmine'
|
||||
]
|
||||
@@ -54,6 +65,10 @@ const config = {
|
||||
colors: true,
|
||||
autoWatch: false,
|
||||
singleRun: true,
|
||||
captureTimeout: 90000,
|
||||
browserDisconnectTolerance: 3,
|
||||
browserDisconnectTimeout: 90000,
|
||||
browserNoActivityTimeout: 90000,
|
||||
concurrency: Number.POSITIVE_INFINITY,
|
||||
client: {
|
||||
clearContext: false
|
||||
@@ -98,7 +113,36 @@ const config = {
|
||||
}
|
||||
}
|
||||
|
||||
if (BROWSERSTACK) {
|
||||
if (LAMBDATEST) {
|
||||
config.hostname = 'localhost.lambdatest.com',
|
||||
Object.keys(browsers['lambdaTest']).map(key => {
|
||||
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].tunnelName = process.env.LT_TUNNEL_NAME || 'jasmine'
|
||||
browsers['lambdaTest'][key].pseudoActivityInterval = 15000 // 5000 ms heartbeat
|
||||
}
|
||||
else {
|
||||
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"].tunnelName = process.env.LT_TUNNEL_NAME || 'jasmine'
|
||||
browsers['lambdaTest'][key]["LT:Options"].plugin = 'bootstrap-karma'
|
||||
browsers['lambdaTest'][key]["LT:Options"].pseudoActivityInterval = 15000 // 5000 ms heartbeat
|
||||
}
|
||||
browsers['lambdaTest'][key].retryLimit = 2
|
||||
})
|
||||
plugins.push('karma-webdriver-launcher', 'karma-jasmine', 'karma-jasmine-html-reporter')
|
||||
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,
|
||||
@@ -108,8 +152,8 @@ if (BROWSERSTACK) {
|
||||
retryLimit: 2
|
||||
}
|
||||
plugins.push('karma-browserstack-launcher', 'karma-jasmine-html-reporter')
|
||||
config.customLaunchers = browsers
|
||||
config.browsers = Object.keys(browsers)
|
||||
config.customLaunchers = browsers['browserStack']
|
||||
config.browsers = Object.keys(browsers['browserStack'])
|
||||
reporters.push('BrowserStack', 'kjhtml')
|
||||
} else if (JQUERY_TEST) {
|
||||
frameworks.push('detectBrowsers')
|
||||
@@ -126,6 +170,21 @@ if (BROWSERSTACK) {
|
||||
watched: false
|
||||
}
|
||||
]
|
||||
} else if (JQUERY_TEST) {
|
||||
frameworks.push('detectBrowsers')
|
||||
plugins.push(
|
||||
'karma-chrome-launcher',
|
||||
'karma-firefox-launcher',
|
||||
'karma-detect-browsers'
|
||||
)
|
||||
config.detectBrowsers = detectBrowsers
|
||||
config.files = [
|
||||
'node_modules/jquery/dist/jquery.slim.min.js',
|
||||
{
|
||||
pattern: 'js/tests/unit/jquery.spec.js',
|
||||
watched: false
|
||||
}
|
||||
]
|
||||
} else {
|
||||
frameworks.push('detectBrowsers')
|
||||
plugins.push(
|
||||
@@ -162,7 +221,6 @@ if (BROWSERSTACK) {
|
||||
config.frameworks = frameworks
|
||||
config.plugins = plugins
|
||||
config.reporters = reporters
|
||||
|
||||
module.exports = karmaConfig => {
|
||||
config.logLevel = karmaConfig.LOG_ERROR
|
||||
karmaConfig.set(config)
|
||||
|
18
js/tests/lt-local.js
Normal file
18
js/tests/lt-local.js
Normal file
@@ -0,0 +1,18 @@
|
||||
const lambdaTunnel = require("@lambdatest/node-tunnel");
|
||||
const tunnelInstance = new lambdaTunnel();
|
||||
const tunnelArguments = {
|
||||
user: process.env.LT_USERNAME,
|
||||
key: process.env.LT_ACCESS_KEY,
|
||||
tunnelName: process.env.LT_TUNNEL_NAME || 'jasmine',
|
||||
logFile: "local.log"
|
||||
};
|
||||
|
||||
if (process.env.LAMBDATEST == 'true') {
|
||||
(async () => {
|
||||
try {
|
||||
await tunnelInstance.start(tunnelArguments)
|
||||
} catch (err) {
|
||||
console.log(err.message)
|
||||
}
|
||||
})()
|
||||
}
|
1565
package-lock.json
generated
1565
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -72,6 +72,8 @@
|
||||
"js-test-integration-bundle": "rollup --config js/tests/integration/rollup.bundle.js",
|
||||
"js-test-integration-modularity": "rollup --config js/tests/integration/rollup.bundle-modularity.js",
|
||||
"js-test-cloud": "cross-env BROWSERSTACK=true npm run js-test-karma",
|
||||
"js-test-ltcloud": "cross-env LAMBDATEST=true npm-run-all js-test-ltTunnel js-test-karma ",
|
||||
"js-test-ltTunnel": "node js/tests/lt-local",
|
||||
"js-test-jquery": "cross-env JQUERY=true npm run js-test-karma",
|
||||
"lint": "npm-run-all --aggregate-output --continue-on-error --parallel js-lint css-lint lockfile-lint",
|
||||
"docs": "npm-run-all docs-build docs-lint",
|
||||
@@ -107,6 +109,7 @@
|
||||
"@babel/core": "^7.24.0",
|
||||
"@babel/preset-env": "^7.24.0",
|
||||
"@popperjs/core": "^2.11.8",
|
||||
"@lambdatest/node-tunnel": "^3.0.12",
|
||||
"@rollup/plugin-babel": "^6.0.4",
|
||||
"@rollup/plugin-commonjs": "^25.0.7",
|
||||
"@rollup/plugin-node-resolve": "^15.2.3",
|
||||
@@ -137,6 +140,7 @@
|
||||
"karma-jasmine": "^5.1.0",
|
||||
"karma-jasmine-html-reporter": "^2.1.0",
|
||||
"karma-rollup-preprocessor": "7.0.7",
|
||||
"karma-webdriver-launcher": "^1.0.8",
|
||||
"lockfile-lint": "^4.13.2",
|
||||
"nodemon": "^3.1.0",
|
||||
"npm-run-all2": "^6.1.2",
|
||||
|
Reference in New Issue
Block a user