Episódio 21:por Brendan Hansknecht em Mountain View, CA (maio de 2021)
Episódios anteriores
Antes, automatizar a interface do ChromeOS em testes completos (E2E) em todo o tem sido difícil. No Tast, uma nova biblioteca de interface criada que usa a árvore de acessibilidade (acessibilidade) do Chrome para controlar a interface do ChromeOS. Este permite que os desenvolvedores criem facilmente testes E2E em qualquer Superfície da interface (interface da área de trabalho do ChromeOS, apps nativos, apps da Web, interface do navegador Chrome).
A biblioteca tem uma maneira simples e encadeada de descrever como encontrar um elemento da interface. Por exemplo, a pasta Downloads no app Arquivos pode ser definida como:
filesWindow := nodewith.NameStartingWith("Files")
.ClassName("RootView").Role(role.Window)
downloadsButton := nodewith.Name("Downloads")
.Role(role.TreeItem).Ancestor(filesWindow)
Após definir um localizador de nós, é possível interagir com o nó de várias maneiras. De simples cliques à espera pelo foco, a interface oferece acesso estável a muitas operações. Por exemplo, à direita clique na pasta Downloads e depois no botão "Copiar". Você pode escrever:
ui := uiauto.New(tconn)
if err := uiauto.Combine("copy downloads",
ui.RightClick(downloadsButton),
ui.LeftClick(nodewith.Name("Copy").Role(role.MenuItem)),
)(ctx); err != nil { /* do error handling */ }
Existem wrappers em torno de áreas comuns da interface (configurações, acesso rápido, app de arquivos etc.
A função uiauto.Run
usada acima faz uma lista de ações. Neste
contexto, uma ação é apenas uma func(context.Context) error
. Com um
API simples, outros tipos de ações podem ser misturados com ações da interface.
Por exemplo, usar o teclado é tão fácil quanto:
if err := uiauto.Combine("do some random stuff",
ui.FocusAndWait( /* some text field */ ),
kb.TypeAction("Hello, world!"),
kb.AccelAction("Enter"),
func(ctx context.Context) error {
// My custom action!
},
)(ctx); err != nil { /* do error handling */ }
Para ver um guia mais detalhado, consulte o Tast Codelab: automação da interface do Chrome (em inglês)
Ao programar esses testes, é muito útil despejar a árvore de acessibilidade do Chrome. para depuração. Basta adicionar o código a seguir para fazer isso:
defer faillog.DumpUITreeOnError(ctx, s.OutDir(), s.HasError, tconn)
s.Fatal("I would like to see the ui tree here")
A árvore de acessibilidade agora será armazenada com outros registros tast como faillog/ui_tree.txt
Se tiver dúvidas, entre em contato com o grupo Tat-users.