68 lines
2.4 KiB
TypeScript
68 lines
2.4 KiB
TypeScript
// wdio.firefox.conf.ts
|
|
// extends the main configuration file changing first participant to be Firefox
|
|
import { mergeWith } from 'lodash-es';
|
|
import process from 'node:process';
|
|
|
|
// @ts-ignore
|
|
import { config as defaultConfig } from './wdio.conf.ts';
|
|
|
|
const ffArgs = [];
|
|
|
|
const ffPreferences = {
|
|
'intl.accept_languages': 'en-US',
|
|
'media.navigator.permission.disabled': true,
|
|
'media.navigator.streams.fake': true,
|
|
'media.autoplay.default': 0
|
|
};
|
|
|
|
if (process.env.HEADLESS === 'true') {
|
|
ffArgs.push('--headless');
|
|
}
|
|
|
|
const mergedConfig = mergeWith(defaultConfig, {
|
|
exclude: [
|
|
'specs/iframe/*.spec.ts', // FF does not support uploading files (uploadFile)
|
|
|
|
// FF does not support setting a file as mic input, no dominant speaker events
|
|
'specs/media/activeSpeaker.spec.ts',
|
|
'specs/media/startMuted.spec.ts', // bad audio levels
|
|
'specs/media/desktopSharing.spec.ts',
|
|
'specs/media/lastN.spec.ts',
|
|
|
|
// fails randomly for failed downloading asset and page stays in incomplete state
|
|
'specs/misc/urlNormalisation.spec.ts',
|
|
|
|
// when unmuting a participant, we see the presence in debug logs immediately,
|
|
// but for 15 seconds it is not received/processed by the client
|
|
// (also the menu disappears after clicking one of the moderation options, does not happen manually)
|
|
'specs/media/audioVideoModeration.spec.ts'
|
|
],
|
|
capabilities: {
|
|
p1: {
|
|
capabilities: {
|
|
browserName: 'firefox',
|
|
// Only pin the custom jitsi-stable/jitsi-beta aliases when routing through
|
|
// Selenium Grid. Local geckodriver doesn't know these aliases.
|
|
...(process.env.GRID_HOST_URL ? {
|
|
browserVersion: process.env.BROWSER_FF_BETA ? 'jitsi-beta' : 'jitsi-stable'
|
|
} : {}),
|
|
'moz:firefoxOptions': {
|
|
args: ffArgs,
|
|
prefs: ffPreferences
|
|
},
|
|
acceptInsecureCerts: process.env.ALLOW_INSECURE_CERTS === 'true'
|
|
}
|
|
}
|
|
}
|
|
}, (objValue: any, srcValue: any) => {
|
|
if (Array.isArray(objValue)) {
|
|
return objValue.concat(srcValue);
|
|
}
|
|
});
|
|
|
|
// Remove the chrome options from the first participant
|
|
// @ts-ignore
|
|
mergedConfig.capabilities.p1.capabilities['goog:chromeOptions'] = undefined;
|
|
|
|
export const config = mergedConfig;
|