2023-08-04 19:33:57 -04:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
2023-08-02 20:30:48 -04:00
|
|
|
from selenium import webdriver
|
|
|
|
from selenium.webdriver.common.by import By
|
|
|
|
from selenium.webdriver.support import expected_conditions
|
|
|
|
from selenium.webdriver.support.ui import WebDriverWait
|
|
|
|
|
|
|
|
import os
|
|
|
|
import subprocess
|
|
|
|
import time
|
|
|
|
|
|
|
|
for path in ('out/selenium.sqlite', 'out/selenium.sqlite-shm', 'out/selenium.sqlite-wal'):
|
|
|
|
try:
|
|
|
|
os.unlink(path)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
tf = subprocess.Popen(['out/debug/tildefriends', 'run', '-d', 'out/selenium.sqlite', '-b', '0', '-p', '8888'])
|
|
|
|
|
2023-08-02 20:44:35 -04:00
|
|
|
def exists_in_shadow_root(shadow_root, by, value):
|
|
|
|
return lambda driver: shadow_root.find_element(by, value)
|
|
|
|
|
2023-08-02 20:30:48 -04:00
|
|
|
try:
|
|
|
|
options = webdriver.FirefoxOptions()
|
|
|
|
#options.add_argument('--headless')
|
|
|
|
driver = webdriver.Firefox(options = options)
|
2023-08-07 12:13:02 -04:00
|
|
|
wait = WebDriverWait(driver, 30)
|
2023-08-02 20:30:48 -04:00
|
|
|
driver.get('http://localhost:8888')
|
|
|
|
driver.find_element(By.TAG_NAME, 'tf-navigation').shadow_root.find_element(By.LINK_TEXT, 'login').click()
|
|
|
|
driver.find_element(By.ID, 'register').click()
|
|
|
|
driver.find_element(By.ID, 'name').send_keys('test_user')
|
|
|
|
driver.find_element(By.ID, 'password').send_keys('test_password')
|
|
|
|
driver.find_element(By.ID, 'confirm').send_keys('test_password')
|
|
|
|
driver.find_element(By.ID, 'loginButton').click()
|
|
|
|
|
|
|
|
driver.switch_to.frame(driver.find_element(By.ID, 'document'))
|
2023-08-07 12:13:02 -04:00
|
|
|
wait.until(expected_conditions.presence_of_element_located((By.LINK_TEXT, 'ssb'))).click()
|
2023-08-02 20:30:48 -04:00
|
|
|
driver.switch_to.default_content()
|
|
|
|
|
2023-08-07 12:13:02 -04:00
|
|
|
driver.switch_to.frame(wait.until(expected_conditions.presence_of_element_located((By.ID, 'document'))))
|
|
|
|
tf_app = wait.until(expected_conditions.presence_of_element_located((By.TAG_NAME, 'tf-app'))).shadow_root
|
|
|
|
wait.until(expected_conditions.element_to_be_clickable(tf_app.find_element(By.ID, 'create_identity'))).click()
|
|
|
|
wait.until(expected_conditions.alert_is_present()).accept()
|
2023-08-02 20:44:35 -04:00
|
|
|
|
2023-08-07 12:13:02 -04:00
|
|
|
tf_tab_news = wait.until(exists_in_shadow_root(tf_app, By.ID, 'tf-tab-news')).shadow_root
|
2023-08-02 20:30:48 -04:00
|
|
|
tf_tab_news.find_element(By.ID, 'tf-compose').shadow_root.find_element(By.ID, 'edit').send_keys('Hello, world!')
|
|
|
|
tf_tab_news.find_element(By.ID, 'tf-compose').shadow_root.find_element(By.ID, 'submit').click()
|
|
|
|
|
|
|
|
driver.switch_to.default_content()
|
|
|
|
driver.find_element(By.ID, 'allow').click()
|
|
|
|
|
|
|
|
print('SUCCESS.')
|
|
|
|
finally:
|
|
|
|
driver.close()
|
|
|
|
driver.quit()
|
|
|
|
|
|
|
|
tf.terminate()
|