{"id":25474647,"url":"https://github.com/antoniodamous/test-automation-puppeteer","last_synced_at":"2026-04-29T15:34:04.670Z","repository":{"id":278141043,"uuid":"934611238","full_name":"antoniodamous/test-automation-puppeteer","owner":"antoniodamous","description":"Teste de automação de drag and drop de e-mail's da pasta Spam para a Caixa de Entrada.","archived":false,"fork":false,"pushed_at":"2025-02-18T07:13:25.000Z","size":4,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-18T08:26:10.171Z","etag":null,"topics":["chrome","chrome-devtools","gmail","javasacript","puppeteer"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/antoniodamous.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-18T05:47:47.000Z","updated_at":"2025-02-18T07:18:29.000Z","dependencies_parsed_at":"2025-02-18T08:26:13.149Z","dependency_job_id":"6ac8307d-c545-4adc-a65e-21f18fad75ea","html_url":"https://github.com/antoniodamous/test-automation-puppeteer","commit_stats":null,"previous_names":["antoniodamous/test-automation-puppeteer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniodamous%2Ftest-automation-puppeteer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniodamous%2Ftest-automation-puppeteer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniodamous%2Ftest-automation-puppeteer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniodamous%2Ftest-automation-puppeteer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antoniodamous","download_url":"https://codeload.github.com/antoniodamous/test-automation-puppeteer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239462383,"owners_count":19642745,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrome","chrome-devtools","gmail","javasacript","puppeteer"],"created_at":"2025-02-18T11:30:30.297Z","updated_at":"2025-11-05T15:30:24.308Z","avatar_url":"https://github.com/antoniodamous.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Teste de Automação com Puppeteer\n\n## 📌 Objetivo do Teste\n\nTeste de automação de drag and drop de e-mail's da pasta Spam para a Caixa de Entrada.\n\n---\n\n## 1. Requisitos\n\n- [Node.js](https://nodejs.org/)\n- [Google Chrome](https://www.google.com/intl/pt-BR/chrome/)\n- [Puppeteer](https://pptr.dev/)\n\n## 2. Instalação e Configuração\n\nObs: Verifique se a conta do Gmail está logada com seu perfil. Depois pode encerrar a aplicação.\n\n### 2.1 Instalar Puppeteer\n```bash\nnpm install puppeteer\n```\n\n### 2.2 Iniciar o Chrome com Depuração Remota\nPara conectar o Puppeteer a um navegador já aberto, inicie o Chrome com a opção de depuração remota ativada conforme exemplo abaixo. \nObs:\n- O caminho do executável pode variar\n- Após execução do código no terminal o Chrome será aberto.\n- Certificar que na inicialização do Chrome esteja como \"Continuar de onde parou\".\n\nLinux\n```bash\n/opt/google/chrome/google-chrome --remote-debugging-port=9222\n```\n\nMac OS\n```bash\n/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --remote-debugging-port=9222\n```\nWindows\n```bash\n\"C:\\\\Program Files\\\\Google\\\\Chrome\\\\Application\\\\chrome.exe\" --remote-debugging-port=9222\n```\n\n### 2.3 Localizar o WebSocketDebuggerURL\n\nAbrir uma nova aba e acessar `http://localhost:9222/json` para encontrar o `webSocketDebuggerUrl` da aba do Gmail.\n\nObs:\n- Efetuar comando CRTL+F e localizar: \"Spam\".\n- Copiar \"ws://localhost:9222/devtools/browser/SEU_BROWSER_ID\".\n- Esse caminho será atualizado no código abaixo.\n\n## 3. Código-Fonte Principal (`test.js`)\n\n```javascript\nconst puppeteer = require('puppeteer');\n\n(async () =\u003e {\n    try {\n        // Conecta ao navegador\n        const browser = await puppeteer.connect({\n            browserWSEndpoint: 'ws://localhost:9222/devtools/browser/SEU_BROWSER_ID' // Atualize com o WebSocketDebbuggerURL localizado em http://localhost:9222/json\n        });\n\n        // Lista todas as abas e seleciona a primeira (No Caso o Gmail)\n        const pages = await browser.pages();\n        const gmailPage = pages[0];\n\n        // Aguarda o carregamento da página de e-mails\n        await gmailPage.waitForSelector('table.F.cf.zt');\n\n        // Seleciona o primeiro e-mail da lista\n        const emailToMove = await gmailPage.$('table.F.cf.zt tr');\n        if (!emailToMove) throw new Error(\"Nenhum e-mail encontrado na pasta atual.\");\n\n        // Simula passar o mouse sobre o e-mail\n        await emailToMove.hover();\n\n        // Pressiona Shift para simular uma possível seleção múltipla (opcional)\n        await gmailPage.keyboard.down('Shift');\n\n        // Aguarda a Caixa de Entrada aparecer no menu lateral\n        const inbox = await gmailPage.$('div[aria-label=\"Caixa de entrada\"]');\n        if (!inbox) throw new Error(\"Caixa de entrada não encontrada.\");\n\n        // Move a posição do e-mail e da Caixa de Entrada\n        const emailBox = await emailToMove.boundingBox();\n        const inboxBox = await inbox.boundingBox();\n        if (!emailBox || !inboxBox) throw new Error(\"Falha ao obter as coordenadas dos elementos.\");\n\n        // Simula o arrastar e soltar do mouse\n        await gmailPage.mouse.move(emailBox.x + emailBox.width / 2, emailBox.y + emailBox.height / 2);\n        await gmailPage.mouse.down(); // Segura o clique\n        await gmailPage.mouse.move(inboxBox.x + inboxBox.width / 2, inboxBox.y + inboxBox.height / 2, { steps: 10 }); // Move para a Caixa de Entrada\n        await gmailPage.mouse.up(); // Solta o clique\n\n        console.log('Email movido para a Caixa de Entrada!');\n\n        // Fecha o navegador\n        await browser.close();\n    } catch (error) {\n        console.error(\"Erro encontrado:\", error);\n    }\n})();\n```\n\n## 4. Execução do Script\n\nSalvar arquivo `test.js` na máquina local\n```bash\nnode test.js\n```\n\n\n## 🙇🏻‍♂️ Apredizado\n- [Documentação Puppeteer](https://pptr.dev/category/introduction)\n- [Documentação Javascript](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference)\n- [DOM](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model)\n- [Como conectar-se a um navegador existente](https://pptr.dev/#?product=Puppeteer\u0026version=v5.5.0\u0026show=api-puppeteerconnectoptions)\n- [Seletores no Puppeteer](https://pptr.dev/#?product=Puppeteer\u0026version=v5.5.0\u0026show=api-pagewaitforselectorselector-options)\n- [Chrome](https://developer.chrome.com/docs/devtools?hl=pt-br)\n- [Seletore no CSS](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_selectors)\n\n\n## 🔗 Links\n\n\u003cp align=\"center\"\u003e\n \n \u003ca href=\"https://www.linkedin.com/in/antoniodamous\" alt=\"Linkedin\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/-Linkedin-0A66C2?style=for-the-badge\u0026logo=Linkedin\u0026logoColor=FFFFFF\u0026link=https://www.linkedin.com/in/antoniodamous\"/\u003e \n \u003c/a\u003e\n\n \u003c/p\u003e\n \n## 💻 Autor\u003cbr\u003e\n\n\u003ccenter\u003e\n      \u003ca href=\"https://github.com/antoniodamous\"\u003e \u003ccenter\u003e\n       \u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/antoniodamous.png\" width=\"100px;\" /\u003e\n        \u003c/a\u003e \u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003e Developed by \u003ca href=\"https://www.linkedin.com/in/antoniodamous/\"\u003eAntônio Damous\u003c/a\u003e and \u003ca [href=\"https://cloudflare.com/](https://github.com/puppeteer)\"\u003ePuppeteer\u003c/a\u003e 🥋\u003c/h3\u003e\n\n\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantoniodamous%2Ftest-automation-puppeteer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantoniodamous%2Ftest-automation-puppeteer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantoniodamous%2Ftest-automation-puppeteer/lists"}