1
resposta

[Reclamação] eslint não funciona!!

eslint não funciona!! Mesmo seguindo todas as orientacoes do forum, uso da Luri, video aula, o eslint nao funciona como é mostrado na aula.

npm run lint
> lint
> eslint cypress/**/*.js && eslint cypress.config.js
  2:1  error  'describe' is not defined  no-undef
  3:5  error  'it' is not defined        no-undef
  4:7  error  'cy' is not defined        no-undef

Arquivo eslint.config.mjs

import globals from "globals";
import pluginJs from "@eslint/js";


/** @type {import('eslint').Linter.Config[]} */
export default [
  {languageOptions: { globals: {...globals.browser, ...globals.node} }},
  pluginJs.configs.recommended,
];

Arquivo .eslintrc.json

{
    "env": {
      "cypress/globals": true,
      "mocha": true
    },
    "extends": [
      "plugin:cypress/recommended"
    ],
    "plugins": [
      "cypress"
    ],
    "rules": {
      "cypress/no-assigning-return-values": "error",
      "cypress/no-unnecessary-waiting": "error",
      "cypress/assertion-before-screenshot": "warn",
      "cypress/no-force": "warn",
      "cypress/no-async-tests": "error",
      "cypress/no-pause": "error"
    }
  }

cadastro-sucesso.cy.js

/* eslint-env mocha, cypress */
describe('Teste simples', () => {
    it('deve passar', () => {
      cy.visit('http://localhost:3000');
    });
  });

// describe('Página de cadastro', () => {
//     beforeEach(() => {
//         cy.visit('http://localhost:3000');
//     })

//     it('Clica no link "Cadastra-se" e redireciona para a página de cadastro da clínica', () => {
//         cy.get('[href="/cadastro"]').click();
//         cy.location('pathname').should('equal', '/cadastro'); // Asserção para verificar o redirecionamento
//     })

//     context('Primeira parte da sessão de cadastro', () => {
//         it('Digita dados da clínica e exibe a área para inserção de dados técnicos', () => {
//             cy.get('[href="/cadastro"]').click();
//             cy.get('[data-test="inputNome"]').type('Catarina P');
//             cy.get('[data-test="inputCNPJ"]').type('12598432');
//             cy.get('[data-test="inputEmail"]').type('catarina@email.com');
//             cy.get('[data-test="inputSenha"]').type('Senha123');
//             cy.get('[data-test="inputSenhaVerificada"]').type('Senha123');
//             cy.get('.sc-bcXHqe').click();
//             cy.contains('h2', 'Agora, os dados técnicos:').should('be.visible'); // Asserção para verificar a visibilidade
//             cy.get('.sc-laZRCg').should('exist').should('be.visible'); // Asserção para verificar a existência
//         })
//     })
//     context('Sessão de cadastro completa', () => {
//         it('Cadastra uma clínica', () => {
//             cy.get('[href="/cadastro"]').click();
//             cy.get('[data-test="inputNome"]').type('Catarina P');
//             cy.get('[data-test="inputCNPJ"]').type('12598432');
//             cy.get('[data-test="inputEmail"]').type('catarina@email.com');
//             cy.get('[data-test="inputSenha"]').type('Senha123');
//             cy.get('[data-test="inputSenhaVerificada"]').type('Senha123');
//             cy.get('.sc-bcXHqe').click()
//             cy.get('[data-test="inputTelefone"]').type('9999999999');
//             cy.get('[data-test="inputCEP"]').type('99999999');
//             cy.get('[data-test="inputRua"]').type('Salvatori');
//             cy.get('[data-test="inputNumero"]').type('999');
//             cy.get('[data-test="inputComplemento"]').type('Irmãos salvatori');
//             cy.get('[data-test="inputEstado"]').type('BA');
//             cy.contains('Cadastrar').click();
//             cy.location('pathname').should('equal', '/login');
//         })
//     })
// });

Arquivo package.json

{
  "scripts": {
    "lint": "eslint cypress/**/*.js && eslint cypress.config.js",
    "lint:fix": "eslint cypress/**/*.js --fix && eslint cypress.config.js --fix",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@eslint/js": "^9.19.0",
    "eslint": "^9.19.0",
    "eslint-plugin-cypress": "^4.1.0",
    "globals": "^15.14.0",
    "mochawesome": "^7.1.3"
  },
  "dependencies": {
    "cypress": "^14.0.1"
  }
}

Notei algumas configuraçoes diferentes no video e que nao foram explicadas de como fazer, entao o package.json está um pouco diferente. Algumas configs como o uso explícito do "mocha", foram sugestoes da Luri.

1 resposta

Oi Allan! Tudo bem?

Realmente mudou bastante coisa no Eslint e no Plugin do Eslint para o Cypress, mas buscando a documentação oficial ficou bem claro o que deve ser feito. Então, vou deixar os passos necessários para que a verificação dos erros ocorra sem maiores problemas.

  1. Caso tenha pegado o projeto base do curso como modelo original para construir o projeto, talvez você esteja utilizando versões desatualizados do eslint e eslint-plugin-cypress, logo, recomendo que rode os seguintes comandos para desinstalar e instalar novamente:

    Desinstalar

    npm uninstall eslint eslint-plugin-cypress
    

    Instalar

    npm install eslint eslint-plugin-cypress
    
  2. Como a forma da biblioteca de visualizar os arquivos mudou, todos os arquivos que não sejam o eslint.config.mjs, com o início eslint, devem ser apagados. Exemplos de nomes de arquivos: eslintrc.json e .eslintignore.

  3. Por fim, a forma como você adiciona a configuração no arquivo eslint.config.mjs pode ser feita de duas forma, uma mais extensa especificando qual regra você quer adicionar:

    import pluginCypress from 'eslint-plugin-cypress/flat'
    
    export default [
        pluginCypress.configs.recommended,
        {
            rules: {
             'cypress/no-unnecessary-waiting': 'off'
            }
         }
    ]
    

    Ou usando as configurações globais:

    import pluginCypress from 'eslint-plugin-cypress/flat'
    
    export default [
      pluginCypress.configs.globals
    ]
    

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.