mirror of
https://github.com/steveseguin/caption-local.git
synced 2026-10-09 17:49:30 +00:00
40 lines
1.7 KiB
Python
40 lines
1.7 KiB
Python
"""Browser selection for Windows/Linux tests, without changing installed browsers."""
|
|
import os
|
|
from pathlib import Path
|
|
|
|
|
|
def browser_options():
|
|
explicit = os.environ.get('CAPTION_TEST_BROWSER')
|
|
if explicit:
|
|
if not Path(explicit).is_file():
|
|
raise RuntimeError(f'CAPTION_TEST_BROWSER does not exist: {explicit}')
|
|
return {'executable_path': explicit}
|
|
if os.name == 'nt':
|
|
for variable in ('PROGRAMFILES(X86)', 'PROGRAMFILES', 'LOCALAPPDATA'):
|
|
base = Path(os.environ.get(variable, ''))
|
|
for relative in ('Microsoft/Edge/Application/msedge.exe', 'Google/Chrome/Application/chrome.exe'):
|
|
candidate = base / relative
|
|
if candidate.is_file():
|
|
return {'executable_path': str(candidate)}
|
|
elif Path('/usr/bin/google-chrome').is_file():
|
|
return {'executable_path': '/usr/bin/google-chrome'}
|
|
# Install with: python -m playwright install chromium
|
|
return {}
|
|
|
|
|
|
def authenticate(page):
|
|
"""Supply a configured local token in tab memory, never as global HTTP headers."""
|
|
if page.locator('#connection').count():
|
|
page.fill('#connectionToken', os.environ.get('CAPTION_API_KEY', ''))
|
|
page.click('#connect')
|
|
elif os.environ.get('CAPTION_API_KEY'):
|
|
page.evaluate('token => { serviceToken=token; return health(); }', os.environ['CAPTION_API_KEY'])
|
|
|
|
|
|
async def authenticate_async(page):
|
|
if await page.locator('#connection').count():
|
|
await page.fill('#connectionToken', os.environ.get('CAPTION_API_KEY', ''))
|
|
await page.click('#connect')
|
|
elif os.environ.get('CAPTION_API_KEY'):
|
|
await page.evaluate('token => { serviceToken=token; return health(); }', os.environ['CAPTION_API_KEY'])
|