டெஸ்ட்ரன்னருடன் ஹெட்லெஸ் & Xvfb
இந்தப் பக்கம் WebdriverIO டெஸ்ட்ரன்னர் லினக்ஸில் Xvfb (X Virtual Framebuffer) பயன்படுத்தி ஹெட்லெஸ் இயக்கத்திற்கு எவ்வாறு ஆதரவளிக்கிறது என்பதை விளக்குகிறது. இது Xvfb எப்போது பயனுள்ளதாக இருக்கும், எவ்வாறு அதனை உள்ளமைக்க வேண்டும், மற்றும் CI மற்றும் Docker இல் அது எவ்வாறு செயல்படுகிறது என்பதை உள்ளடக்கியுள்ளது.
Xvfb-ஐ எப்போது பயன்படுத்த வேண்டும் vs இயல்பான ஹெட்லெஸ ்
- சாத்தியமான போது இயல்பான ஹெட்லெஸ் (எ.கா., Chrome
--headless=...) பயன்படுத்தவும், குறைந்தபட்ச ஓவர்ஹெட் உள்ளது. - Xvfb-ஐ இந்த நிலைகளில் பயன்படுத்தவும்:
- எலெக்ட்ரான் அல்லது ஒரு விண்டோ மேனேஜர் அல்லது டெஸ்க்டாப் சூழல் தேவைப்படும் பயன்பாடுகளை சோதிக்கும் போது
- நீங்கள் GLX அல்லது விண்டோ-மேனேஜர் சார்ந்த செயல்பாடுகளை நம்பியிருக்கும் போது
- உங்கள் கருவிகள் ஒரு காட்சி சேவையகத்தை (
DISPLAY) எதிர்பார்க்கும் போது - நீங்கள் குரோமியம் பிழைகளை சந்திக்கும் போது:
session not created: probably user data directory is already in use ...Chrome failed to start: exited abnormally. (DevToolsActivePort file doesn't exist)பயனர் தரவு அடைவு மோதல் பிழை தவறாக வழிநடத்தக்கூடும், ஏனெனில் இது பெரும்பாலும் உலாவி செயலிழப்பு மற்றும் உடனடி மறுதொடக்கத்தின் விளைவாக, முந்தைய நிகழ்வில் இருந்து அதே சுயவிவர அடைவை மீண்டும் பயன்படுத்துவதாகும். ஒரு நிலையான காட்சியை உறுதிப்படுத்துவது (எ.கா., Xvfb மூலம்) பெரும்பாலும் இதைத் தீர்க்கிறது - இல்லையெனில், ஒவ்வொரு தொழிலாளிக்கும் தனிப்பட்ட--user-data-dirகொடுக்க வேண்டும்.
உள்ளமைவு
நான்கு ரன்னர் விருப்பங்கள் Xvfb நடத்தையை கட்டுப்படுத்துகின்றன:
-
autoXvfb(boolean, இயல்புநிலை: true)- பயன்பாட்டிற்கான அதிகாரபூர்வ டாகிள்.
falseஎனில், ரன்னர் ஒருபோதும் Xvfb ஐப் பயன்படுத்தாது. trueஎனில், தேவைப்படும்போது ரன்னர் Xvfb ஐப் பயன்படுத்தலாம்.
- பயன்பாட்டிற்கான அதிகாரபூர்வ டாகிள்.
-
xvfbAutoInstall(boolean, இயல்புநிலை: false)xvfb-runகாணவில்லை எனில் தானியங்கி நிறுவலை இயக்கவும்- false எனில், ரன்னர் எச்சரித்து நிறுவாமல் தொடரும்
-
xvfbAutoInstallMode('root' | 'sudo', இயல்புநிலை: 'sudo')- 'root': ரூட்டாக இயங்கும் போது மட்டுமே நிறுவவும் (sudo இல்லாமல்)
- 'sudo': ரூட் இல்லாவிட்டால் ஊடாட்டமற்ற sudo (
sudo -n) அனுமதிக்கவும்; sudo இல்லை எனில் தவிர்க்கவும்
-
xvfbAutoInstallCommand(string | string[], விருப்பத்தேர்வு)- உள்ளமைக்கப்பட்ட தொகுப்பு மேலாளர் கண்டறிதலுக்குப் பதிலாக நிறுவலுக்குப் பயன்படுத்த தனிப்பயன் கட்டளை
- வழங்கப்பட்டால், இந்த கட்டளை அப்படியே செயல்படுத்தப்படுகிறது மற்றும் உள்ளமைக்கப்பட்ட நிறுவல் தர்க்கத்தை மீறுகிறது
-
xvfbMaxRetries(number, இயல்புநிலை: 3)- xvfb செயல்முறை தோ ல்விகளுக்கான மறுமுயற்சி முயற்சிகளின் எண்ணிக்கை.
- Xvfb தொடக்கம் அவ்வப்போது தோல்வியடையக்கூடிய நிலையற்ற CI சூழல்களுக்கு பயனுள்ளதாக இருக்கும்.
-
xvfbRetryDelay(number, இயல்புநிலை: 1000)- xvfb செயல்முறை தோல்விகளுக்கான மறுமுயற்சிகளுக்கு இடையேயான அடிப்படை தாமதம் மில்லிவினாடிகளில்.
- முற்போக்கு தாமதத்தைப் பயன்படுத்துகிறது: தாமதம் × முயற்சி எண் (எ.கா., 1000ms, 2000ms, 3000ms, போன்றவை).
எடுத்துக்காட்டுகள்:
export const config: WebdriverIO.Config = {
// தேவைப்படும்போது Xvfb ஐப் பயன்படுத்துக
autoXvfb: true,
// sudo பயன்படுத்தி Xvfb தொகுப்புகளை தானாக நிறுவுக
xvfbAutoInstall: true,
xvfbAutoInstallMode: 'sudo',
capabilities: [{
browserName: 'chrome',
'goog:chromeOptions': { args: ['--headless=new', '--no-sandbox'] }
}]
}
export const config: WebdriverIO.Config = {
// தேவைப்படும்போது Xvfb ஐப் பயன்படுத்துக
autoXvfb: true,
// தனிப்பயன் கட்டளை மற்றும் sudo பயன்படுத்தி Xvfb தொகுப்புகளை தானாக நிறுவுக
xvfbAutoInstall: true,
xvfbAutoInstallMode: 'sudo',
xvfbAutoInstallCommand: 'curl -L https://github.com/X11/xvfb/releases/download/v1.20.14/xvfb-linux-x64.tar.gz | tar -xz -C /usr/local/bin/',
capabilities: [{
browserName: 'chrome',
'goog:chromeOptions': { args: ['--headless=new', '--no-sandbox'] }
}]
}
export const config: WebdriverIO.Config = {
// தேவைப்படும்போது Xvfb ஐப் பயன்படுத்துக
autoXvfb: true,
// sudo பயன்படுத்தி Xvfb தொகுப்புகளை தானாக நிறுவுக
xvfbAutoInstall: true,
xvfbAutoInstallMode: 'sudo',
// நிலையற்ற CI சூழல்களுக்கான மறுமுயற்சி நடத்தையை உள்ளமைக்கவும்
xvfbMaxRetries: 5,
xvfbRetryDelay: 1500,
capabilities: [{
browserName: 'chrome',
'goog:chromeOptions': { args: ['--headless=new', '--no-sandbox'] }
}]
}