返回 build

test-lemma.py

build/test-lemma.py · 2.5 KB · 61 行
build/test-lemma.py 2.5 KB · 61 行 GitHub
import json, sysfrom patchright.sync_api import sync_playwrightURL = sys.argv[1] if len(sys.argv) > 1 else "http://127.0.0.1:8137/guessword.html"with sync_playwright() as p:    b = p.chromium.launch(headless=True, args=["--no-proxy-server"])    pg = b.new_page()    errs = []    pg.on("pageerror", lambda e: errs.append(str(e)[:200]))    pg.goto(URL, wait_until="domcontentloaded")    pg.wait_for_function("document.getElementById('dictCount') && document.getElementById('dictCount').textContent !== '…'", timeout=60000)    # start a game (A2 single level)    pg.evaluate("document.getElementById('startBtn').click()")    pg.wait_for_timeout(300)    pg.evaluate("document.querySelectorAll('.lvCard')[1].click()")    pg.wait_for_timeout(200)    pg.evaluate("document.querySelectorAll('.lvCard')[1].click()")    pg.wait_for_timeout(200)    pg.evaluate("document.getElementById('beginBtn').click()")    pg.wait_for_timeout(800)    def guess(w):        pg.fill("#guessInput", w)        pg.press("#guessInput", "Enter")        pg.wait_for_timeout(900)    # 1) lemma mapping: 'cats' should add a row showing 'Cat'    guess("cats")    rows = pg.evaluate("[...document.querySelectorAll('#board .row')].map(r=>r.textContent.replace(/\\s+/g,' ').slice(0,60))")    print("after 'cats':", json.dumps(rows, ensure_ascii=False))    # 2) duplicate via lemma: guessing 'cat' after 'cats' should error as duplicate    guess("cat")    res = pg.evaluate("(document.getElementById('resultArea')||{}).textContent || ''")    print("after 'cat' dup:", res[:80])    # 3) irregular: 'went' -> 'go' row    guess("went")    rows2 = pg.evaluate("[...document.querySelectorAll('#board .row')].map(r=>r.textContent.replace(/\\s+/g,' ').slice(0,60))")    print("after 'went':", json.dumps(rows2, ensure_ascii=False))    # 4) UK spelling: 'colour' -> 'color' row    guess("colour")    rows3 = pg.evaluate("[...document.querySelectorAll('#board .row')].map(r=>r.textContent.replace(/\\s+/g,' ').slice(0,60))")    print("after 'colour':", json.dumps(rows3, ensure_ascii=False))    # 5) removed proper noun: 'london' should be rejected    guess("london")    res2 = pg.evaluate("(document.getElementById('resultArea')||{}).textContent || ''")    print("after 'london':", res2[:80])    # 6) kept word: 'people' should be accepted    guess("people")    rows4 = pg.evaluate("[...document.querySelectorAll('#board .row')].map(r=>r.textContent.replace(/\\s+/g,' ').slice(0,60))")    print("after 'people':", json.dumps(rows4, ensure_ascii=False))    print("PAGE_ERRORS:", errs)    b.close()