<?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: Ana Vera</title>
    <description>The latest articles on DEV Community by Ana Vera (@anacvera).</description>
    <link>https://dev.to/anacvera</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%2F2710417%2Fcdc8c5cb-5cdf-4dd5-bb3c-d6e562383e49.jpeg</url>
      <title>DEV Community: Ana Vera</title>
      <link>https://dev.to/anacvera</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anacvera"/>
    <language>en</language>
    <item>
      <title>🔐 Login Seguro com Robot Framework: Protegendo Credenciais e Reutilizando Código</title>
      <dc:creator>Ana Vera</dc:creator>
      <pubDate>Mon, 24 Mar 2025 19:35:41 +0000</pubDate>
      <link>https://dev.to/anacvera/login-seguro-com-robot-framework-protegendo-credenciais-e-reutilizando-codigo-2d6i</link>
      <guid>https://dev.to/anacvera/login-seguro-com-robot-framework-protegendo-credenciais-e-reutilizando-codigo-2d6i</guid>
      <description>&lt;p&gt;👋 Se você usa o Robot Framework nos seus testes automatizados, já deve ter esbarrado em um dilema comum: como lidar com credenciais de forma segura e ao mesmo tempo manter um código limpo e reutilizável?&lt;/p&gt;

&lt;p&gt;Neste post, vou te mostrar uma abordagem simples e eficaz que implementei em um projeto recente, usando o env.resource para armazenar informações sensíveis, e reutilizando a lógica de login com a ajuda do Set Test Variable.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;1. Armazenando credenciais no env.resource&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A ideia é centralizar as credenciais em um arquivo separado, que NUNCA vai pro Git. Assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;*** Variables ***
${USER_STANDART}         usuario_padrao
${PASSWORD_STANDART}     senha_segura
${USER_PROBLEM}          usuario_secundario
${PASSWORD_PROBLEM}      senha_secundaria
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse arquivo fica em Settings/auth/env.resource e, claro, está devidamente listado no .gitignore:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# Evita que credenciais sejam commitadas&lt;br&gt;
env.resource&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ Segurança garantida: nada de senhas vazando no seu repositório.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Reutilizando o login com Set Test Variable&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agora vem a parte legal: em vez de duplicar a keyword de login para cada usuário, usamos variáveis globais para trocar dinamicamente os valores.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;*** Keywords ***
Login problem_user
    Set Test Variable    ${user_standart}    ${user_problem}
    Set Test Variable    ${password_standart}    ${password_problem}
    Efetuar login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com isso, a keyword Efetuar login continua a mesma para qualquer cenário — só alteramos os valores antes da execução. 😎&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;📁 Estrutura do Projeto&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📦 ROBOT-FRAMEWORK-ENV
 ┣ 📂 Settings/
 ┃ ┣ 📂 auth/         → env.resource (credenciais)
 ┃ ┣ 📂 login/        → login.resource (keyword do login)
 ┣ 📂 Utilizando_o_env/
 ┃ ┣ executar.robot   → testes chamando login
 ┗ .gitignore         → protege o env.resource
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quer ver o repositório completo? Dá uma olhada aqui: 🔗 [&lt;a href="https://github.com/anavera12/robot-framework-env/tree/main" rel="noopener noreferrer"&gt;https://github.com/anavera12/robot-framework-env/tree/main&lt;/a&gt;]&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Como mascarar dados sensíveis na pipeline utilizando Cypress</title>
      <dc:creator>Ana Vera</dc:creator>
      <pubDate>Tue, 14 Jan 2025 18:50:27 +0000</pubDate>
      <link>https://dev.to/anacvera/como-mascarar-dados-sensiveis-na-pipeline-utilizando-cypress-bfn</link>
      <guid>https://dev.to/anacvera/como-mascarar-dados-sensiveis-na-pipeline-utilizando-cypress-bfn</guid>
      <description>&lt;p&gt;&lt;strong&gt;1. Por que precisamos mascarar dados sensíveis?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Segurança: As informações confidenciais (senhas, tokens, etc.) não podem ficar expostas em arquivos versionados ou em logs de execução.&lt;/li&gt;
&lt;li&gt;Compliance: Dependendo da sua organização, existem regras de compliance que exigem esse cuidado.&lt;/li&gt;
&lt;li&gt;Boas práticas: Facilita a manutenção do projeto e evita vazamento de dados.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Criando Secrets no GitHub&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Acesse o repositório no GitHub.&lt;/li&gt;
&lt;li&gt;Vá em Settings &amp;gt; Secrets and variables &amp;gt; Actions.&lt;/li&gt;
&lt;li&gt;Clique em New repository secret.&lt;/li&gt;
&lt;li&gt;Crie uma secret para cada valor sensível (por exemplo: USER_NAME/PASSWORD, API_KEY, TOKEN).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essas variáveis não ficam expostas no repositório e podem ser utilizadas apenas dentro dos arquivos de workflow do GitHub Actions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Adicionando secrets no arquivo de workflow&lt;/strong&gt;&lt;br&gt;
No seu arquivo de workflow (.github/workflows/ci.yml), adicione as secrets como variáveis de ambiente para que o Cypress possa acessá-las:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: Cypress Tests
on: push
jobs:
  cypress-run:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Set up Node
        uses: actions/setup-node@v3
        with: 
          node-version: v20.17.0
      - name: Install dependencies
        run:
          npm install
          npm run build
          npm run test
      - name: Run Cypress Tests
        run: npx cypress run
        env:
          USER_NAME: ${{ secrets.USER_NAME }}
          PASSWORD: ${{ secrets.PASSWORD }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;secrets.USER_NAME e secrets.PASSWORD referem-se às secrets que você adicionou nas configurações do repositório.&lt;/li&gt;
&lt;li&gt;Esses valores não aparecem em texto puro nos logs do GitHub, pois o GitHub automaticamente os mascara.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Configurando o Cypress para usar as variáveis de ambiente&lt;/strong&gt;&lt;br&gt;
No arquivo de configuração do Cypress (cypress.config.js ou cypress.config.ts), você pode captar as variáveis de ambiente do sistema e atribuí-las ao objeto env do Cypress:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { defineConfig } = require('cypress');

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      // Passa as variáveis de ambiente do sistema para o config do Cypress
      config.env.DB_PASSWORD = process.env.DB_PASSWORD;
      config.env.API_KEY = process.env.API_KEY;
      config.env.TOKEN = process.env.TOKEN;

      return config;
    },
  },
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5. Boas práticas para evitar exposição de dados&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Não versionar o .env: Se você utiliza um arquivo .env para desenvolvimento local, adicione-o ao .gitignore. Os valores de produção ou staging devem ser configurados como secrets no GitHub, não no repositório.&lt;/li&gt;
&lt;li&gt;Não exibir segredos em logs: evite usar

&lt;code&gt;console.log(Cypress.env('DB_PASSWORD'))&lt;/code&gt;

, pois isso pode vazar em relatórios.
- Mascarar manualmente valores sensíveis (se necessário): se ainda assim precisar exibir algo parecido em logs, use o comando de mascaramento do GitHub:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- name: Mask sensitive data
  run: echo "::add-mask::${{ secrets.DB_PASSWORD }}"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assim, se o valor aparecer em algum log, ele será substituído por ***.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Informações adicionais ❗❗&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As variaváveis que estão dentro do .env devem conter a mesma nomenclatura das variáveis adicionadas no respositório secret no github.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
  </channel>
</rss>
