more selenium tests

This commit is contained in:
2022-07-11 16:39:46 +02:00
parent 008371d518
commit 16e2f65c84
4 changed files with 164 additions and 75 deletions

View File

@@ -42,7 +42,7 @@ def NewPackageList(name=None, description=None, error=False, errormsg=None):
_for="listname",
_class=cls("font-bold", "w-1/2", "p-2", "text-center"),
)
with t.div(_class=cls("w-1/2")):
with t.span(_class=cls("w-1/2")):
t._input(
type="text",
id="listname",
@@ -80,6 +80,7 @@ def NewPackageList(name=None, description=None, error=False, errormsg=None):
_for="listdesc",
_class=cls("font-bold", "w-1/2", "text-center"),
)
with t.span(_class=cls("w-1/2")):
t._input(
type="text",
id="listdesc",
@@ -87,7 +88,7 @@ def NewPackageList(name=None, description=None, error=False, errormsg=None):
**{"value": description} if description is not None else {},
_class=cls(
"block",
"w-1/2",
"w-full",
"p-2",
"bg-gray-50",
"appearance-none",

View File

@@ -30,7 +30,7 @@ class PackageListTableRowEdit:
if error:
t.p(errormsg, _class=cls("text-red-400", "text-sm"))
with t.div(_class=cls("flex", "flex-row", "h-full")):
with t.div(
with t.span(
_class=cls(
"border",
"border-1",
@@ -50,7 +50,7 @@ class PackageListTableRowEdit:
"x-on:input": "edit_submit_enabled = $event.srcElement.value.trim().length !== 0;"
},
)
with t.div(
with t.span(
_class=cls(
"border", "border-1", "border-purple-500", "bg-purple-100"
)
@@ -79,6 +79,7 @@ class PackageListTableRowEdit:
data_hx_target="closest tr",
data_hx_swap="outerHTML",
):
with t.button():
t.span(_class=cls("mdi", "mdi-cancel", "text-xl")),
with t.td(
id="edit-packagelist-save",
@@ -105,12 +106,7 @@ class PackageListTableRowNormal:
with t.tr(_class=cls("h-10", "even:bg-gray-100", "hover:bg-purple-200")) as doc:
t.td(pkglist.name, _class=cls("border", "px-2")),
t.td(str(pkglist.description), _class=cls("border", "px-2")),
t.td(
t.span(_class=cls("mdi", "mdi-delete", "text-xl")),
id="delete-packagelist",
data_hx_delete=f"/list/{pkglist.id}",
data_hx_target="closest tr",
data_hx_swap="outerHTML",
with t.td(
_class=cls(
"border",
"bg-red-200",
@@ -118,8 +114,16 @@ class PackageListTableRowNormal:
"cursor-pointer",
"w-8",
"text-center",
),
),
)
):
with t.a(
data_hx_delete=f"/list/{pkglist.id}",
data_hx_target="closest tr",
data_hx_swap="outerHTML",
href=f"/list/{pkglist.id}/delete",
):
with t.button():
t.span(_class=cls("mdi", "mdi-delete", "text-xl"))
with t.td(
_class=cls(
"border",
@@ -131,17 +135,15 @@ class PackageListTableRowNormal:
)
):
with t.a(
id="edit-packagelist",
data_hx_post=f"/list/{pkglist.id}/edit",
href=f"/?edit={pkglist.id}",
data_hx_target="closest tr",
data_hx_swap="outerHTML",
):
t.span(_class=cls("mdi", "mdi-pencil", "text-xl")),
t.td(
t.span(_class=cls("mdi", "mdi-arrow-right", "text-xl")),
id="edit-packagelist",
# data_hx_post=f"/list/{pkglist.id}/show",
):
with t.button():
t.span(_class=cls("mdi", "mdi-pencil", "text-xl")),
with t.td(
_class=cls(
"border",
"bg-green-200",
@@ -149,8 +151,11 @@ class PackageListTableRowNormal:
"cursor-pointer",
"w-8",
"text-center",
),
),
)
):
with t.button():
t.span(_class=cls("mdi", "mdi-arrow-right", "text-xl"))
# data_hx_post=f"/list/{pkglist.id}/show",
self.doc = doc

View File

@@ -245,6 +245,15 @@ def edit_list(id):
return make_response(out.render(), 200)
@app.route("/list/<uuid:id>/delete", methods=["GET"])
def delete_list_via_get(id):
if not delete_packagelist(id=id):
return make_response("", 404)
r = make_response("", 303)
r.headers["Location"] = "/"
return r
@app.route("/list/<uuid:id>", methods=["DELETE"])
def delete_list(id):
if not delete_packagelist(id=id):

View File

@@ -1,6 +1,9 @@
#!/usr/bin/env python3
import time
import argparse
import code
import readline
from helium import *
import selenium
@@ -8,16 +11,19 @@ import selenium
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
parser = argparse.ArgumentParser()
parser.add_argument("--repl", action="store_true")
args = parser.parse_args()
opts = selenium.webdriver.firefox.options.Options()
for has_javascript in [True, False]:
profile = selenium.webdriver.FirefoxProfile()
profile.set_preference("javascript.enabled", "false")
profile.DEFAULT_PREFERENCES['frozen']['javascript.enabled'] = False
profile.DEFAULT_PREFERENCES["frozen"]["javascript.enabled"] = has_javascript
opts.profile = profile
driver = selenium.webdriver.Remote(
command_executor="http://localhost:4444/wd/hub",
options=opts,
command_executor="http://localhost:4444/wd/hub", options=opts
)
driver.implicitly_wait(0)
Config.implicit_wait_secs = 1
@@ -40,27 +46,95 @@ try:
assert len(lists_before) == len(lists_after) - 1
nameidx = next(i for i,v in enumerate(find_all(S("table > thead > tr > th"))) if v.web_element.text == "Name")
descidx = next(i for i,v in enumerate(find_all(S("table > thead > tr > th"))) if v.web_element.text == "Description")
nameidx = next(
i
for i, v in enumerate(find_all(S("table > thead > tr > th")))
if v.web_element.text == "Name"
)
descidx = next(
i
for i, v in enumerate(find_all(S("table > thead > tr > th")))
if v.web_element.text == "Description"
)
new_entry = lists_after[-1]
write("newlist2", into=TextField(to_right_of="Name"))
write("newlistdesc2", into=TextField(to_right_of="Description"))
click(Button("Add"))
cells = new_entry.web_element.find_elements_by_tag_name("td")
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
assert len(lists_before) == len(lists_after) - 2
new_entry1 = lists_after[-2]
cells = new_entry1.web_element.find_elements_by_tag_name("td")
assert cells[nameidx].text == "newlist"
assert cells[descidx].text == "newlistdesc"
lists_before = lists_after
new_entry2 = lists_after[-1]
cells = new_entry2.web_element.find_elements_by_tag_name("td")
assert cells[nameidx].text == "newlist2"
assert cells[descidx].text == "newlistdesc2"
deletebtn = new_entry.web_element.find_element_by_class_name("mdi-delete")
editbtn = new_entry1.web_element.find_element_by_class_name("mdi-pencil")
click(editbtn)
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
editrow = find_all(S("table > tbody > tr"))[-2]
inputs = editrow.web_element.find_elements_by_xpath("//input")
write("editedname", into=inputs[0])
write("editeddesc", into=inputs[1])
savebtn = editrow.web_element.find_element_by_class_name("mdi-content-save")
click(savebtn)
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
new_entry1 = lists_after[-2]
cells = new_entry1.web_element.find_elements_by_tag_name("td")
assert cells[nameidx].text == "editedname"
assert cells[descidx].text == "editeddesc"
editbtn = new_entry1.web_element.find_element_by_class_name("mdi-pencil")
click(editbtn)
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
editrow = find_all(S("table > tbody > tr"))[-2]
inputs = editrow.web_element.find_elements_by_xpath("//input")
write("editedname_again", into=inputs[0])
write("editeddesc_again", into=inputs[1])
cancelbtn = editrow.web_element.find_element_by_class_name("mdi-cancel")
click(cancelbtn)
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
new_entry1 = lists_after[-2]
cells = new_entry1.web_element.find_elements_by_tag_name("td")
assert cells[nameidx].text == "editedname"
assert cells[descidx].text == "editeddesc"
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
new_entry1 = lists_after[-2]
deletebtn = new_entry1.web_element.find_element_by_class_name("mdi-delete")
click(deletebtn)
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
assert len(lists_before) - 1 == len(lists_after)
assert len(lists_before) + 1 == len(lists_after)
new_entry2 = lists_after[-1]
deletebtn = new_entry2.web_element.find_element_by_class_name("mdi-delete")
click(deletebtn)
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
assert len(lists_before) == len(lists_after)
if args.repl:
code.InteractiveConsole(locals=globals()).interact()
import code; code.interact(local=locals())
time.sleep(5)
finally:
driver.quit()
time.sleep(5)