Pular para o conteúdo

Diálogos

Confirmar, abrir arquivo, salvar e escolher pasta — os do sistema na janela, e o roteiro do teste na Sonda.

Na janela, cada diálogo é o nativo do sistema — o seletor de arquivos do Finder, do Explorer ou do GTK. Na Sonda, é a resposta que o teste deu. E um diálogo que o teste não roteirizou é falha: inventar um "sim" esconderia exatamente o que quebra em produção.

ChamadaDevolveCancelado
t.confirmar(pergunta)yes ou nono
t.abrir_arquivo(titulo, tipos)o caminhovoid
t.salvar_arquivo(nome_sugerido, tipos)o caminhovoid
t.escolher_pasta(titulo)o caminhovoid
dataforge
adopt Arcane.Bigorna as B
adopt Arcane.OS as OS

itens := ["a", "b"]
salvo := []
app := B.app("Lista", pasta_de_config := $"{OS.temp_dir()}/df-doc-{randint(100000, 999999)}")

action tela(t):
    t.lista(itens)
    given t.botao("Apagar tudo") and t.confirmar("Apagar os itens?"):
        itens.clear()
    given t.botao("Exportar"):
        caminho := t.salvar_arquivo("itens.txt", ["txt"])
        given caminho isnt void:
            salvo.append(caminho)

app.tela("t", tela)
s := B.testar(app)

// sem roteiro: falha, com a dica do que fazer
monitor:
    s.clicar("Apagar tudo")
    assert no
handle Error as e:
    out e.message

s.responder(no)
s.clicar("Apagar tudo")
assert len(itens) is 2          // "não" não apaga

s.responder("/tmp/itens.txt")
s.clicar("Exportar")
assert salvo is ["/tmp/itens.txt"]

s.responder(void)               // o usuário cancelou
s.clicar("Exportar")
assert len(salvo) is 1
out s.dialogos_pedidos()

s.dialogos_pedidos() lista o que a tela pediu, na ordem — é como se confere que a pergunta certa foi feita, e não só que a resposta funcionou.