<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Bruno Romeiro</title>
    <description>The latest articles on DEV Community by Bruno Romeiro (@brunoromeiro).</description>
    <link>https://dev.to/brunoromeiro</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F191966%2F336f62c8-f686-4a53-9115-bb4981a20f7c.jpg</url>
      <title>DEV Community: Bruno Romeiro</title>
      <link>https://dev.to/brunoromeiro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/brunoromeiro"/>
    <language>en</language>
    <item>
      <title>Como atualizar um repositório 'forkado' com git rebase</title>
      <dc:creator>Bruno Romeiro</dc:creator>
      <pubDate>Mon, 09 Sep 2024 20:12:05 +0000</pubDate>
      <link>https://dev.to/brunoromeiro/como-atualizar-um-repositorio-forkado-com-git-rebase-ce3</link>
      <guid>https://dev.to/brunoromeiro/como-atualizar-um-repositorio-forkado-com-git-rebase-ce3</guid>
      <description>&lt;p&gt;Passo 1: adicione o remote (repositório original de onde você fez o fork) e chame-o de "upstream"&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;git remote add upstream https://github.com/repo-base/main.git&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Passo 2: busque todas as branchs do upstream remoto&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;git fetch upstream&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Passo 3: reescreva sua branch main com a branch main do upstream usando o git rebase&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;git rebase upstream/main&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Passo 4: dê o push das suas atualizações para sua branch. É necessário forçar o push com &lt;code&gt;--force&lt;/code&gt; ou &lt;code&gt;-f&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;git push -f&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>git</category>
      <category>fork</category>
      <category>rebase</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Integridade de sub-recursos (SRI)</title>
      <dc:creator>Bruno Romeiro</dc:creator>
      <pubDate>Fri, 02 Jul 2021 14:44:20 +0000</pubDate>
      <link>https://dev.to/brunoromeiro/integridade-de-sub-recursos-sri-1oih</link>
      <guid>https://dev.to/brunoromeiro/integridade-de-sub-recursos-sri-1oih</guid>
      <description>&lt;h2&gt;
  
  
  O que é integridade de sub-recursos?
&lt;/h2&gt;

&lt;p&gt;SRI é uma especificação da W3C que permite aos desenvolvedores web garantir que os recursos hospedados em servidores de terceiros não foram adulterados. Seu uso é recomendado como boa prática, sempre que as bibliotecas são carregadas de uma fonte de terceiro.&lt;/p&gt;

&lt;h3&gt;
  
  
  Qual a diferença entre SRI e HTTPS?
&lt;/h3&gt;

&lt;p&gt;O HTTPS garante que a conexão entre o navegador e o servidor seja segura. O próprio recurso ainda pode ser modificado no lado do servidor por um invasor para incluir conteúdo malicioso, mas ainda pode ser servido com um certificado válido. O SRI, por outro lado, garante que um recurso não mudou desde que o hash foi criado.&lt;/p&gt;

&lt;h3&gt;
  
  
  Por que incluir &lt;code&gt;crossorigin=”anonymous”&lt;/code&gt;?
&lt;/h3&gt;

&lt;p&gt;Quando a solicitação não está na mesma origem, o atributo &lt;code&gt;crossorigin&lt;/code&gt; deve estar presente para a verificação da integridade do arquivo. Sem este atributo, o navegador informará &lt;code&gt;fail-open&lt;/code&gt;, o que significa que carregará o recurso como se o atributo de integridade não tivesse sido definido, perdendo efetivamente toda a segurança que o SRI traz em primeiro lugar.&lt;br&gt;
O &lt;code&gt;crossorigin="anonymous"&lt;/code&gt; resulta que nenhuma credencial é enviada ao site de origem que hospeda o conteúdo. No entanto, ele enviará um cabeçalho HTTP &lt;code&gt;Origin&lt;/code&gt;.Se o servidor negar a inclusão do recurso (por não definir o cabeçalho HTTP &lt;code&gt;Access-Control-Allow-Origin&lt;/code&gt;), o recurso não será usado pelo navegador.&lt;/p&gt;
&lt;h2&gt;
  
  
  O Atributo de &lt;code&gt;integrity&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Podemos instruir o navegador a verificar a integridade do conteúdo carregado externamente, incluindo o atributo &lt;code&gt;integrity&lt;/code&gt; nas tags &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; ou &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt;. Este atributo conterá as versões codificadas em base64 dos hashes criptográficos que esperamos para esse ativo específico.&lt;br&gt;
Exemplos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js" integrity="sha256-ivk71nXhz9nsyFDoYoGf2sbjrR9ddh+XDkCcfZxjvcM=" crossorigin="anonymous"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" integrity="sha256-8EtRe6XWoFEEhWiaPkLawAD1FkD9cbmGgEy6F46uQqU=" crossorigin="anonymous"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pode ser utilizado mais de um tipo de hashes, como por exemplo o hash SHA256 junto com o SHA512, deixando para o navegador selecionar qual algoritmo de hash é mais forte e compatível com a verificação de integridade.&lt;br&gt;
Exemplos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js" integrity="sha256-ivk71nXhz9nsyFDoYoGf2sbjrR9ddh+XDkCcfZxjvcM= sha512-7aMbXH03HUs6zO1R+pLyekF1FTF89Deq4JpHw6zIo2vbtaXnDw+/2C03Je30WFDd6MpSwg+aLW4Di46qzu488Q==" crossorigin="anonymous"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" integrity="sha256-8EtRe6XWoFEEhWiaPkLawAD1FkD9cbmGgEy6F46uQqU= sha512-/5KWJw2mvMO2ZM5fndVxUQmpVPqaxZyYRTMrXtrprsyQ2zM0o0NMjU02I8ZJXeBP trmrPO4IAyCCRsydG0BJoQ==" crossorigin="anonymous"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Além disso, também é importante notar que podem ser especificados vários hashes do mesmo tipo, caso você precise que um conteúdo diferente seja servido para a solicitação.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ferramentas para gerar hashes SRI
&lt;/h2&gt;

&lt;p&gt;Existem duas formas fáceis de criar os hashes dos seus objetos.&lt;/p&gt;

&lt;p&gt;O SRI Hash Generator é uma ferramenta online que você pode usar para gerar hashes SRI.&lt;/p&gt;

&lt;p&gt;Caso prefira gerar manualmente via linha de comando, é necessário utilizar o OpenSSL, com o seguinte comando:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat FILENAME.js | openssl dgst -sha384 -binary | openssl base64 -A&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Pode ser utilizado também com shasum usando o comando:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;shasum -b -a 384 FILENAME.js | awk '{ print $1 }' | xxd -r -p | base64&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;O pipe &lt;code&gt;xxd&lt;/code&gt; pega a saída hexadecimal &lt;code&gt;shasum&lt;/code&gt;e a converte em binária&lt;/li&gt;
&lt;li&gt;A etapa &lt;code&gt;awk&lt;/code&gt; do pipe é necessária porque o &lt;code&gt;shasum&lt;/code&gt; vai passar o nome do arquivo hasheado em sua saída &lt;code&gt;xxd&lt;/code&gt;. Isso pode ter consequências desastrosas se o nome do arquivo tiver caracteres hexadecimais válidos, porque o &lt;code&gt;xxd&lt;/code&gt; também decodificará isso e passará para &lt;code&gt;base64&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;No Windows, é possível criar uma ferramenta para geração dos hashes SRI com o seguinte código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@echo off
set bits=384
openssl dgst -sha%bits% -binary %1% | openssl base64 -A &amp;gt; tmp
set /p a= &amp;lt; tmp
del tmp
echo sha%bits%-%a%
pause

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para usar o código:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Salve esse código como sri-hash.bat na pasta SendTo do Windows em seu ambiente (C:\Users\USER\AppData\Roaming\Microsoft\Windows\SendTo).&lt;/li&gt;
&lt;li&gt;Clique com o botão direito em um arquivo no Explorer, selecione ‘Enviar Para’ e selecione &lt;code&gt;sri-hash&lt;/code&gt;. Você verá o valor do integrity em uma caixa de comando.&lt;/li&gt;
&lt;li&gt;Selecione o valor de &lt;code&gt;integrity&lt;/code&gt; e clique com o botão direito para copiá-lo para a área de transferência.&lt;/li&gt;
&lt;li&gt;Pressione qualquer tecla para fechar a caixa de comando.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;O comando wget faz download do arquivo. A partir daí, o comando car produz o arquivo que é canalizado para o OpenSSL que irá executá-lo por meio do hash SHA256 e fornecer o resumo na forma binária. Isso é então canalizado para o OpenSSL novamente para codificar a saída em base64. A string resultante é o valor do atributo &lt;code&gt;integrity&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Atributo &lt;code&gt;crossorigin&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;O 'crossorigin' instrui o navegador a fazer uma solicitação habilitada para CORS de forma ativa. O compartilhamento de recursos &lt;code&gt;crossorigin&lt;/code&gt;. Podem ser passador 2 valores para este atributo que são &lt;code&gt;anonymous&lt;/code&gt; e &lt;code&gt;use-credentials&lt;/code&gt;, a diferença entre eles é que o primeiro é usado porque é feito através de uma solicitação HTTP simples, sem envio de credenciais, ou seja, sem cookies, sem certificados e sem a autenticação básica do HTTP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como os navegadores lidam com o SRI
&lt;/h2&gt;

&lt;p&gt;Os navegadores lidam com SRI fazendo o seguinte:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Quando um navegador encontra um elemento &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; ou &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; com o atribuito &lt;code&gt;integrity&lt;/code&gt;, antes de executar o script ou baixar a folha de estilos especificada, o navegador primeiro compara o script ou a folha de estilos ao valor do hash esperado fornecido pelo &lt;code&gt;integrity&lt;/code&gt;;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Observação: para verificação de SRI de um recurso servido de uma origem diferente do documento no qual está incorporado, os navegadores também verificam o recurso usando CORS, para garantir que a origem que atende o recurso permite que ele seja compartilhado com a origem solicitante.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Se o script ou folha de estilo não corresponder ao valor associado de &lt;code&gt;integrity&lt;/code&gt; o navegador deve se recusar a executar o script ou aplicar a folha de estilo e, em vez disso, deve retornar um erro de rede indicando que a busca desse script ou folha de estilo falhou.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Navegadores compatíveis
&lt;/h3&gt;

&lt;p&gt;Os seguintes navegadores desktop são compatíveis a partir das seguintes versões:&lt;br&gt;
Chrome 45+, Edge, 17+, Firefox 43+, Opera, Safari 11.1+.&lt;/p&gt;

&lt;p&gt;Os seguintes navegadores mobile são compatíveis a partir das seguintes versões:&lt;br&gt;
WebView Android 45+, Chrome Android 45+,  Firefox for Android 43+, Safari IOS 11.3+, Samsung Internet 5.0+.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;O Internet Explorer não tem compatibilidade, e o Opera Android não se sabe se possui compatibilidade.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>frontend</category>
      <category>security</category>
      <category>sri</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Angular com Jest</title>
      <dc:creator>Bruno Romeiro</dc:creator>
      <pubDate>Thu, 13 Aug 2020 14:58:25 +0000</pubDate>
      <link>https://dev.to/brunoromeiro/angular-com-jest-5enn</link>
      <guid>https://dev.to/brunoromeiro/angular-com-jest-5enn</guid>
      <description>&lt;h2&gt;
  
  
  O que é Jest?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;É um poderoso Framework de Testes em JavaScript com um foco na simplicidade, que funciona com projetos usando: Babel, TypeScript, Node, React, Angular, Vue e muito mais!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Essa é a descrição oficial do &lt;a href="https://jestjs.io/pt-BR/" rel="noopener noreferrer"&gt;Jest&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que tirar uma estrutura nativa e usar o Jest?
&lt;/h2&gt;

&lt;p&gt;A principal resposta seria o aumento de produtividade do engenheiro. Sempre que uma ferramenta X é considerada melhor é importante considerar a sua colocação no projeto.&lt;/p&gt;

&lt;p&gt;Alguns dos principais motivos para usar o Jest:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configuração mínima;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jestjs.io/docs/en/snapshot-testing" rel="noopener noreferrer"&gt;Snapshots&lt;/a&gt; 📸;&lt;/li&gt;
&lt;li&gt;Testes Isolados maximizando o desempenho;&lt;/li&gt;
&lt;li&gt;Cobertura criada pelo Istambul;&lt;/li&gt;
&lt;li&gt;Testes com Watch com diversas configurações&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Configurando o Jest no Angular
&lt;/h2&gt;

&lt;p&gt;Vamos iniciar a configuração do Jest no nosso projeto Angular.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Desinstalação do Karma
&lt;/h3&gt;

&lt;p&gt;Desinstale o karma e todas suas dependências.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

npm uninstall karma karma-chrome-launcher karma-coverage-istanbul-reporter karma-jasmine karma-jasmine-html-reporter @types/jasmine @types/jasminewd2 jasmine-core jasmine-spec-reporter


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  2. Remover o teste do &lt;code&gt;angular.json&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Remova toda a seção de teste do arquivo &lt;code&gt;angular.json&lt;/code&gt;, conforme abaixo:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

"test": {
    "builder": "@angular-devkit/build-angular:karma",
    "options": {
        "main": "src/test.ts",
        "polyfills": "src/polyfills.ts",
        "tsConfig": "tsconfig.spec.json",
        "karmaConfig": "karma.conf.js",
        "assets": [
        "src/favicon.ico",
        "src/assets"
        ],
        "styles": [
        "src/styles.scss"
        ],
        "scripts": []
    }
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  3. Arquivos do Karma
&lt;/h3&gt;

&lt;p&gt;Excluir os arquivos &lt;code&gt;karma.conf.js&lt;/code&gt; e &lt;code&gt;src/test.ts&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Instalação do Jest
&lt;/h3&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

npm install jest @types/jest jest-preset-angular --save-dev


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  5. Arquivo de configuração do Jest
&lt;/h3&gt;

&lt;p&gt;Crie o arquivo &lt;code&gt;setupJest.ts&lt;/code&gt; na raiz do seu projeto, e coloque este import dentro dele:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

import 'jest-preset-angular';


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  6. Atualização do tsconfig.spec.ts
&lt;/h3&gt;

&lt;p&gt;Por default o arquivo &lt;code&gt;tsconfig.spec.ts&lt;/code&gt; tem a seguinte configuração:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

{
  "extends": "./tsconfig.base.json",
  "compilerOptions": {
    "outDir": "./out-tsc/spec",
    "types": [
      "jasmine",
      "node"
    ]
  },
  "files": [
    "src/test.ts",
    "src/polyfills.ts"
  ],
  "include": [
    "src/**/*.spec.ts",
    "src/**/*.d.ts"
  ]
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Se faz necessário trocar o &lt;code&gt;jasmine&lt;/code&gt; por &lt;code&gt;jest&lt;/code&gt; e remover o &lt;code&gt;src/test.ts&lt;/code&gt; das configurações, já que excluímos ele no item 3 deste, ficando da seguinte forma:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

{
  "extends": "./tsconfig.base.json",
  "compilerOptions": {
    "outDir": "./out-tsc/spec",
    "types": [
      "jest",
      "node"
    ]
  },
  "files": [
    "src/polyfills.ts"
  ],
  "include": [
    "src/**/*.spec.ts",
    "src/**/*.d.ts"
  ]
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  7. Atualizar o script de test
&lt;/h3&gt;

&lt;p&gt;Por padrão, o &lt;code&gt;package.json&lt;/code&gt; vem com a seguinte configuração de testes:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

"test": "ng test",


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Para utilizar o Jest precisamos trocar para: &lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;"test": "jest",&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;Configuração do Jest
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h3&gt;


&lt;p&gt;Por fim, só adicionar esse trecho de código no final do seu &lt;code&gt;package.json&lt;/code&gt;&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;"jest": {&lt;br&gt;
    "preset": "jest-preset-angular",&lt;br&gt;
    "setupFilesAfterEnv": [&lt;br&gt;
      "&amp;lt;rootDir&amp;gt;/setupJest.ts"&lt;br&gt;
    ],&lt;br&gt;
    "testPathIgnorePatterns": [&lt;br&gt;
      "&amp;lt;rootDir&amp;gt;/node_modules/",&lt;br&gt;
      "&amp;lt;rootDir&amp;gt;/dist/",&lt;br&gt;
      "&amp;lt;rootDir&amp;gt;/src/test.ts"&lt;br&gt;
    ],&lt;br&gt;
    "globals": {&lt;br&gt;
      "ts-jest": {&lt;br&gt;
        "tsConfig": "&amp;lt;rootDir&amp;gt;/tsconfig.spec.json",&lt;br&gt;
        "stringifyContentPathRegex": "\.html$",&lt;br&gt;
        "astTransformers": {&lt;br&gt;
          "before": [&lt;br&gt;
            "jest-preset-angular/build/InlineFilesTransformer",&lt;br&gt;
            "jest-preset-angular/build/StripStylesTransformer"&lt;br&gt;
          ]&lt;br&gt;
        }&lt;br&gt;
      }&lt;br&gt;
    }&lt;br&gt;
  }&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;Ajuste no arquivo de tsconfig
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h3&gt;


&lt;p&gt;Com o lançamento da versão 10 do Angular, as configurações do arquivo &lt;code&gt;tsconfig.json&lt;/code&gt; foram migradas para &lt;code&gt;tsconfig.base.json&lt;/code&gt; e para a utilização do Jest precisamos adicionar a seguinte linha de código dentro do &lt;code&gt;compilerOptions&lt;/code&gt;:&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;"esModuleInterop": true&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Resultado&lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;Ao fim de toda a configuração é possível ver o Jest rodando dentro do seu projeto.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F890gv8krdpc2sa0bbwea.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F890gv8krdpc2sa0bbwea.gif" alt="run test"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Veja os pull requests utilizados neste artigo no meu Github: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/brunoromeiro/2020-site/pull/11" rel="noopener noreferrer"&gt;Jest Config&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/brunoromeiro/2020-site/pull/12" rel="noopener noreferrer"&gt;Fix Warnings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>angular</category>
      <category>testing</category>
      <category>jest</category>
      <category>ptbr</category>
    </item>
  </channel>
</rss>
