Episódio 21:por Brendan Hansknecht em Mountain View, CA (maio de 2021)
Episódios anteriores
Historicamente, automatizar a IU do ChromeOS em testes de ponta a ponta (E2E) em toda a frota de dispositivos tem sido difícil. No Tast, foi criada uma nova biblioteca de IU que usa a árvore de acessibilidade (acessibilidade) do Chrome para controlar a IU do ChromeOS. Essa biblioteca permite que os desenvolvedores criem testes E2E facilmente em qualquer superfície de IU visível (IU para computador ChromeOS, apps nativos, apps da Web, IU do navegador Chrome).
A biblioteca tem uma maneira simples e encadeada de descrever como encontrar um elemento de IU. 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)
Depois de definir um localizador de nós, é possível interagir com o nó de várias maneiras. De cliques simples a espera pelo foco, a biblioteca de IU oferece acesso estável a muitas operações. Por exemplo, para clicar com o botão direito na pasta Downloads e com o botão esquerdo 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 */ }
Já existem wrappers em torno de áreas comuns da IU (configurações, tela de início, app de arquivos etc.).
A função uiauto.Run
usada acima realiza uma lista de ações. Nesse
contexto, uma ação é apenas um func(context.Context) error
. Com uma
API tão simples, outros tipos de ações podem ser misturados com ações da IU.
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 conferir um guia mais detalhado, consulte Tast Codelab: automação da IU do Chrome
Ao programar esses testes, é muito útil despejar a árvore de acessibilidade do Chrome para depuração. Basta adicionar o seguinte código 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 você tiver alguma dúvida, entre em contato com o grupo tast-users.