"""Monta testar_ana.py reaproveitando o DOM falso do teste do protótipo da Fer."""
from pathlib import Path

AQUI = Path(__file__).resolve().parent
base = (AQUI / 'testar_prototipo.py').read_text(encoding='utf-8')
shim = base[base.index("SHIM = r'''"):base.index("TESTES = r'''")]
shim = shim.replace(
    "var CONHECIDOS = ['tela', 'horaTopo', 'horaIphone', 'painel', 'veu', 'toast', 'botaoTema', 'telaApp'];",
    "var CONHECIDOS = ['tela', 'horaTopo', 'horaAparelho', 'painel', 'veu', 'toast', 'botaoTema', 'telaApp', 'botaoGirar', 'textoPrevia'];")
shim = shim.replace('var window = globalThis;', 'var window = globalThis;\nwindow.innerWidth = 1440;\nwindow.innerHeight = 900;')
assert 'botaoGirar' in shim and 'innerWidth' in shim

CABECA = '''"""Roda o JavaScript do copiloto da Ana Carolina num DOM falso e exercita telas e ações."""
import re
import sys

import quickjs

html = open(sys.argv[1], encoding='utf-8').read()
script = re.findall(r'<script>(.*?)</script>', html, re.S)[0]
fim = script.rfind('})();')
exporta = ('\\nglobalThis.__t = { get estado() { return estado; }, ACOES, render, definirModo, temFoto, restam, paraEntregar, '
           'resumoDoDia, PAC, painelAntes, painelFotos, registrarFotosFeitas, URL_ESTACAO, painelFicha, renderHoje, renderFotos, renderAgenda, tituloDia, daData, '
           'visitasDe, chave, deChave, ajustarDia, diaEscolhido, HOJE, ULTIMO, horariosDoDia, padraoRetorno, LEMBRETE_SESSAO, '
           'get modo() { return modo; }, get emPe() { return emPe; } };\\n')
script = script[:fim] + exporta + script[fim:]

'''

TESTES = (AQUI / 'testes_ana.js').read_text(encoding='utf-8')

RODAPE = '''
ctx = quickjs.Context()
ctx.eval(SHIM)
ctx.eval(script)
ctx.eval(TESTES)
while ctx.execute_pending_job():
    pass
print(ctx.eval('__out.join("\\\\n")'))
'''

(AQUI / 'testar_ana.py').write_text(CABECA + shim + "TESTES = r'''\n" + TESTES + "\n'''\n" + RODAPE, encoding='utf-8')
print('escrito')
