Extensões do Chrome de teste de unidade

O teste de unidade permite que pequenas seções de código sejam testadas de forma isolada do restante da extensão e fora do navegador. Por exemplo, é possível programar um teste de unidade para garantir que um método auxiliar grave corretamente um valor no armazenamento.

O código escrito sem o uso de APIs de extensão pode ser testado normalmente, usando um framework como o Jest (link em inglês). Para testar o código com mais facilidade, use técnicas como a injeção de dependência, que podem ajudar a remover dependências no namespace do Chrome na implementação de nível inferior.

Se você precisar testar um código que inclua APIs de extensão, use simulações.

Exemplo: como usar simulações com o Jest

Crie um arquivo jest.config.js que declare um arquivo de configuração a ser executado antes de todos os testes:

jest.config.js:

module.exports = {
  setupFiles: ['<rootDir>/mock-extension-apis.js']
};

Em mock-extension-apis.js, adicione implementações para as funções específicas que você espera chamar:

mock-extension-apis.js:

global.chrome = {
  tabs: {
    query: async () => { throw new Error("Unimplemented.") };
  }
};

Em seguida, use jest.spy para simular um valor de retorno em um teste:

test("getActiveTabId returns active tab ID", async () => {
  jest.spyOn(chrome.tabs, "query").mockResolvedValue([{
    id: 3,
    active: true,
    currentWindow: true
  }]);
  expect(await getActiveTabId()).toBe(3);
});

Próximas etapas

Para garantir que sua extensão funcione conforme esperado, recomendamos adicionar testes completos. Consulte Como testar extensões do Google Chrome com o Puppeteer para ver um tutorial completo.