mirror of
https://github.com/twbs/bootstrap.git
synced 2025-08-14 17:44:15 +02:00
Add Lambdatest support
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -41,3 +41,4 @@ Thumbs.db
|
|||||||
/dist-sass/
|
/dist-sass/
|
||||||
/js/coverage/
|
/js/coverage/
|
||||||
/node_modules/
|
/node_modules/
|
||||||
|
.lambdatest
|
||||||
|
@@ -3,75 +3,149 @@
|
|||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
const browsers = {
|
const browsers = {
|
||||||
safariMac: {
|
lambdaTest: {
|
||||||
base: 'BrowserStack',
|
safariMac: {
|
||||||
os: 'OS X',
|
browserName: 'Safari',
|
||||||
os_version: 'Catalina',
|
browserVersion: 'latest',
|
||||||
browser: 'Safari',
|
"LT:Options": {
|
||||||
browser_version: 'latest'
|
"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: {
|
browserStack: {
|
||||||
base: 'BrowserStack',
|
safariMac: {
|
||||||
os: 'OS X',
|
base: 'BrowserStack',
|
||||||
os_version: 'Catalina',
|
os: 'OS X',
|
||||||
browser: 'Chrome',
|
os_version: 'Catalina',
|
||||||
browser_version: 'latest'
|
browser: 'Safari',
|
||||||
},
|
browser_version: 'latest'
|
||||||
firefoxMac: {
|
},
|
||||||
base: 'BrowserStack',
|
chromeMac: {
|
||||||
os: 'OS X',
|
base: 'BrowserStack',
|
||||||
os_version: 'Catalina',
|
os: 'OS X',
|
||||||
browser: 'Firefox',
|
os_version: 'Catalina',
|
||||||
browser_version: 'latest'
|
browser: 'Chrome',
|
||||||
},
|
browser_version: 'latest'
|
||||||
chromeWin10: {
|
},
|
||||||
base: 'BrowserStack',
|
firefoxMac: {
|
||||||
os: 'Windows',
|
base: 'BrowserStack',
|
||||||
os_version: '10',
|
os: 'OS X',
|
||||||
browser: 'Chrome',
|
os_version: 'Catalina',
|
||||||
browser_version: '60'
|
browser: 'Firefox',
|
||||||
},
|
browser_version: 'latest'
|
||||||
firefoxWin10: {
|
},
|
||||||
base: 'BrowserStack',
|
chromeWin10: {
|
||||||
os: 'Windows',
|
base: 'BrowserStack',
|
||||||
os_version: '10',
|
os: 'Windows',
|
||||||
browser: 'Firefox',
|
os_version: '10',
|
||||||
browser_version: '60'
|
browser: 'Chrome',
|
||||||
},
|
browser_version: '60'
|
||||||
chromeWin10Latest: {
|
},
|
||||||
base: 'BrowserStack',
|
firefoxWin10: {
|
||||||
os: 'Windows',
|
base: 'BrowserStack',
|
||||||
os_version: '10',
|
os: 'Windows',
|
||||||
browser: 'Chrome',
|
os_version: '10',
|
||||||
browser_version: 'latest'
|
browser: 'Firefox',
|
||||||
},
|
browser_version: '60'
|
||||||
firefoxWin10Latest: {
|
},
|
||||||
base: 'BrowserStack',
|
chromeWin10Latest: {
|
||||||
os: 'Windows',
|
base: 'BrowserStack',
|
||||||
os_version: '10',
|
os: 'Windows',
|
||||||
browser: 'Firefox',
|
os_version: '10',
|
||||||
browser_version: 'latest'
|
browser: 'Chrome',
|
||||||
},
|
browser_version: 'latest'
|
||||||
iphone7: {
|
},
|
||||||
base: 'BrowserStack',
|
firefoxWin10Latest: {
|
||||||
os: 'ios',
|
base: 'BrowserStack',
|
||||||
os_version: '12.0',
|
os: 'Windows',
|
||||||
device: 'iPhone 7',
|
os_version: '10',
|
||||||
real_mobile: true
|
browser: 'Firefox',
|
||||||
},
|
browser_version: 'latest'
|
||||||
iphone12: {
|
},
|
||||||
base: 'BrowserStack',
|
iphone7: {
|
||||||
os: 'ios',
|
base: 'BrowserStack',
|
||||||
os_version: '14.0',
|
os: 'ios',
|
||||||
device: 'iPhone 12',
|
os_version: '12.0',
|
||||||
real_mobile: true
|
device: 'iPhone 7',
|
||||||
},
|
real_mobile: true
|
||||||
pixel2: {
|
},
|
||||||
base: 'BrowserStack',
|
iphone12: {
|
||||||
os: 'android',
|
base: 'BrowserStack',
|
||||||
os_version: '8.0',
|
os: 'ios',
|
||||||
device: 'Google Pixel 2',
|
os_version: '14.0',
|
||||||
real_mobile: true
|
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 { browsers } = require('./browsers.js')
|
||||||
|
|
||||||
const ENV = process.env
|
const ENV = process.env
|
||||||
|
const LAMBDATEST = Boolean(ENV.LAMBDATEST)
|
||||||
const BROWSERSTACK = Boolean(ENV.BROWSERSTACK)
|
const BROWSERSTACK = Boolean(ENV.BROWSERSTACK)
|
||||||
const DEBUG = Boolean(ENV.DEBUG)
|
const DEBUG = Boolean(ENV.DEBUG)
|
||||||
const JQUERY_TEST = Boolean(ENV.JQUERY)
|
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 = [
|
const frameworks = [
|
||||||
'jasmine'
|
'jasmine'
|
||||||
]
|
]
|
||||||
@@ -54,6 +65,10 @@ const config = {
|
|||||||
colors: true,
|
colors: true,
|
||||||
autoWatch: false,
|
autoWatch: false,
|
||||||
singleRun: true,
|
singleRun: true,
|
||||||
|
captureTimeout: 90000,
|
||||||
|
browserDisconnectTolerance: 3,
|
||||||
|
browserDisconnectTimeout: 90000,
|
||||||
|
browserNoActivityTimeout: 90000,
|
||||||
concurrency: Number.POSITIVE_INFINITY,
|
concurrency: Number.POSITIVE_INFINITY,
|
||||||
client: {
|
client: {
|
||||||
clearContext: false
|
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.hostname = ip.address()
|
||||||
config.browserStack = {
|
config.browserStack = {
|
||||||
username: ENV.BROWSER_STACK_USERNAME,
|
username: ENV.BROWSER_STACK_USERNAME,
|
||||||
@@ -108,8 +152,8 @@ if (BROWSERSTACK) {
|
|||||||
retryLimit: 2
|
retryLimit: 2
|
||||||
}
|
}
|
||||||
plugins.push('karma-browserstack-launcher', 'karma-jasmine-html-reporter')
|
plugins.push('karma-browserstack-launcher', 'karma-jasmine-html-reporter')
|
||||||
config.customLaunchers = browsers
|
config.customLaunchers = browsers['browserStack']
|
||||||
config.browsers = Object.keys(browsers)
|
config.browsers = Object.keys(browsers['browserStack'])
|
||||||
reporters.push('BrowserStack', 'kjhtml')
|
reporters.push('BrowserStack', 'kjhtml')
|
||||||
} else if (JQUERY_TEST) {
|
} else if (JQUERY_TEST) {
|
||||||
frameworks.push('detectBrowsers')
|
frameworks.push('detectBrowsers')
|
||||||
@@ -126,6 +170,21 @@ if (BROWSERSTACK) {
|
|||||||
watched: false
|
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 {
|
} else {
|
||||||
frameworks.push('detectBrowsers')
|
frameworks.push('detectBrowsers')
|
||||||
plugins.push(
|
plugins.push(
|
||||||
@@ -162,7 +221,6 @@ if (BROWSERSTACK) {
|
|||||||
config.frameworks = frameworks
|
config.frameworks = frameworks
|
||||||
config.plugins = plugins
|
config.plugins = plugins
|
||||||
config.reporters = reporters
|
config.reporters = reporters
|
||||||
|
|
||||||
module.exports = karmaConfig => {
|
module.exports = karmaConfig => {
|
||||||
config.logLevel = karmaConfig.LOG_ERROR
|
config.logLevel = karmaConfig.LOG_ERROR
|
||||||
karmaConfig.set(config)
|
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-bundle": "rollup --config js/tests/integration/rollup.bundle.js",
|
||||||
"js-test-integration-modularity": "rollup --config js/tests/integration/rollup.bundle-modularity.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-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",
|
"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",
|
"lint": "npm-run-all --aggregate-output --continue-on-error --parallel js-lint css-lint lockfile-lint",
|
||||||
"docs": "npm-run-all docs-build docs-lint",
|
"docs": "npm-run-all docs-build docs-lint",
|
||||||
@@ -107,6 +109,7 @@
|
|||||||
"@babel/core": "^7.24.0",
|
"@babel/core": "^7.24.0",
|
||||||
"@babel/preset-env": "^7.24.0",
|
"@babel/preset-env": "^7.24.0",
|
||||||
"@popperjs/core": "^2.11.8",
|
"@popperjs/core": "^2.11.8",
|
||||||
|
"@lambdatest/node-tunnel": "^3.0.12",
|
||||||
"@rollup/plugin-babel": "^6.0.4",
|
"@rollup/plugin-babel": "^6.0.4",
|
||||||
"@rollup/plugin-commonjs": "^25.0.7",
|
"@rollup/plugin-commonjs": "^25.0.7",
|
||||||
"@rollup/plugin-node-resolve": "^15.2.3",
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
||||||
@@ -137,6 +140,7 @@
|
|||||||
"karma-jasmine": "^5.1.0",
|
"karma-jasmine": "^5.1.0",
|
||||||
"karma-jasmine-html-reporter": "^2.1.0",
|
"karma-jasmine-html-reporter": "^2.1.0",
|
||||||
"karma-rollup-preprocessor": "7.0.7",
|
"karma-rollup-preprocessor": "7.0.7",
|
||||||
|
"karma-webdriver-launcher": "^1.0.8",
|
||||||
"lockfile-lint": "^4.13.2",
|
"lockfile-lint": "^4.13.2",
|
||||||
"nodemon": "^3.1.0",
|
"nodemon": "^3.1.0",
|
||||||
"npm-run-all2": "^6.1.2",
|
"npm-run-all2": "^6.1.2",
|
||||||
|
Reference in New Issue
Block a user