Len rýchla aktualizácia k článku, ktorý som napísal pred nejakým časom, ktorý možno považovať za prvú časť tejto témy. Problém opísaný v článku je základný. Pri vývoji Cypress testov je užitočné používať .only(), Cypress modifikátor na vylúčenie ostatných testov, aby sme pri rýchlych iteráciách videli výsledky len toho jedného testu, ktorý vyvíjame. Ale náhodné pushnutie do repozitára spôsobuje množstvo nežiaducich problémov pre všetkých zúčastnených.

Riešenie z toho článku, ktoré som nejaký čas používal, je veľmi základné, no pravdepodobne nie príliš prenositeľné. Mne fungovalo, no žiaľ, nedávno sa mi nedarilo rozbehať ho s čerstvo vydaným Husky 7.0. Odvtedy som prešiel na npm balík s názvom stop-only a nemám sa nač sťažovať.

Používanie stop-only s Husky 7.0 #

Nastavte Husky automaticky:

npx husky-init && npm install

Vyššie uvedené vykoná viacero zmien vo vašom git repozitári:

  • Nainštaluje Husky ako vývojovú závislosť.
  • Povolí git hooky.
  • Pridá prepare skript do package.json.
  • Vytvorí priečinok .husky/, kde sa hooky nachádzajú.

Odstráňte vygenerovaný vzorový súbor pre-commit:

rm .husky/pre-commit

Vygenerujte Husky hook pre-push príkazom:

npx husky add .husky/pre-push "npx stop-only --folder cypress/integration"

Tým sa vytvorí súbor hooku .husky/pre-push s nasledujúcim obsahom:

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx stop-only --folder cypress/integration

Nezabudnite začať sledovať súbor:

git add .husky/pre-push

Ďalej nainštalujte stop-only aj samotný Cypress, oba ako vývojové závislosti:

npm install --save-dev stop-only cypress

A vytvorte vzorový test obsahujúci .only(), napríklad na základnej Cypress testovacej ceste cypress/integration/spec.js:

/// <reference types="cypress" />
describe("Simplest test should", () => {
  it.only("visit base URL", () => {
    cy.visit("/")
  })
})

Push do vzdialeného repozitára je teraz zastavený včas a efektne:

$ git push
Found .only here 👎
cypress/integration/spec.js:3:  it.only("visit base URL", () => {
husky - pre-push hook exited with code 1 (error)

Kompletný príklad je dostupný v repozitári. Príjemné testovanie!

Odkazy #