olivetin/docs/modules/ROOT/images/args/suggestions/setup_firefox.py

78 lines
2.1 KiB
Python

#!/usr/bin/env python3
"""Prepare the Firefox-style suggestions screenshot."""
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
def _wait_for_body_attr(driver, attr, timeout=15):
WebDriverWait(driver, timeout).until(
lambda d: bool(d.find_element(By.TAG_NAME, "body").get_attribute(attr))
)
def _open_form(driver):
_wait_for_body_attr(driver, "loaded-dashboard")
action = driver.find_element(
By.CSS_SELECTOR, '[title="Restart Docker Container"]'
)
action.click()
_wait_for_body_attr(driver, "loaded-argument-form")
driver.execute_script(
"""
const form = document.getElementById('argument-popup');
if (form) {
form.style.margin = '2rem auto';
form.style.maxWidth = '520px';
}
"""
)
def run(driver):
_open_form(driver)
driver.execute_script(
"""
const input = document.getElementById('container');
input.focus();
input.value = '';
document.getElementById('doc-suggestions-overlay')?.remove();
const rect = input.getBoundingClientRect();
const menu = document.createElement('div');
menu.id = 'doc-suggestions-overlay';
menu.style.position = 'fixed';
menu.style.left = `${rect.left}px`;
menu.style.top = `${rect.bottom + 2}px`;
menu.style.width = `${rect.width}px`;
menu.style.background = '#fff';
menu.style.border = '1px solid #ccc';
menu.style.boxShadow = '0 1px 4px rgba(0, 0, 0, 0.15)';
menu.style.font = '13px sans-serif';
menu.style.zIndex = '9999';
for (const label of [
'Firewall Controller',
'graefik',
'grafana',
'plex',
'WiFi Controller',
]) {
const row = document.createElement('div');
row.textContent = label;
row.style.padding = '4px 8px';
menu.appendChild(row);
}
document.body.appendChild(menu);
"""
)
time.sleep(0.2)