Testování šablon

Dokumentace a články:

Zprovoznění testů

Pro přidání testů do šablony stažené z tpltestu postupujte následovně:

  1. Nainstalovat node a npm: https://nodejs.org/en/download/ (instalátor se zeptá na podporu nativních modulů - není potřeba).

  2. V adresáři se šablonou vytvořte soubor s následujícím obsahem (pokud používáte dodaný ZIP pro PhpStorm, tak je už připravený):

package.json - po vytvoření souboru nabídne PHPStorm instalaci závislostí (kliknout na Run 'npm install').

{
  "scripts": {
    "nightwatch": "node -r ts-node/register/transpile-only node_modules/nightwatch/bin/nightwatch"
  },
  "devDependencies": {
    "@simplia/frontend-test-data": "*",
    "@types/nightwatch": "^1.3.3",
    "chromedriver": "*",
    "nightwatch": "^1.6",
    "ts-node": "^9.1.1",
    "typescript": "^4.2.3"
  }
}
../_images/npm-install.png
  1. Ve složce tests vytvořte testy (můžete vytvářet i podsložky):

test.ts

import type * as nightwatch from 'nightwatch'
import {Url} from '@simplia/frontend-test-data'

module.exports = {
    // Platforma, na které spouštět testy (konvence je browser-platforma, např. chrome-desktop, chrome-android, safari-osx)
    '@tags': ['chrome-desktop', 'chrome-android'],
    'NÁZEV TESTU': async function(browser: nightwatch.NightwatchBrowser) {
        // Nastavení velikosti okna (pro testování responzivity)
        browser.resizeWindow(1600, 1200)

        browser.url(await Url.index())

        // Počkáme až se stránka načte (pokud testujeme javascript funkci, tak lze použít "body.js-loaded")
        //browser.waitForElementPresent('body', 5000)

        // Další akce, samotný test

        browser.end()
    }
};
  1. Spustit testy lokálně pomocí tlačítka v PHPStormu:

Volba „nightwatch all“ spustí postupně všechny testy šablony a volba „nightwatch“ pouze aktuálně otevřený soubor s testem.

../_images/run-tests.png

Testovací URL

Do testů není možné uvádět konkrétní URL:
  • nefungovaly by na jiných tpltestech

  • vyprodáním produktu by test přestal fungovat

V testech je proto připravená třída Url, která vrací typové stránky:
  • Url.index() - hlavní strana

  • Url.productWithoutVariants() - náhodný produkt bez varianty

  • Url.productWithSingleVariant() - náhodný produkt s jednou variantou

  • Url.productWithSingleSelectedVariant() - náhodný produkt s jednou předvybranou variantou

  • Url.productWithVariants() - náhodný produkt s více variantami

  • Url.productWithVariantsSelected() - náhodný produkt s více variantami a jednou předvybranou

Všechny URL je navíc možné doplnit o parametry, které ovlivní chování načtené stránky. Lze tak například vypnout javascript a testovat stránku jak vidí zákazník na pomalém připojení: Url.index({javascript: false})

Kromě připravených URL je pak také možné v testu načíst stránku a prokliknout se například v menu. Pokud je potřeba typová stránka se specifickými parametry, obraťte se na podporu pro doplnění.

FAQ

Testy mi přestaly fungovat

Pravděpodobně vyšla aktualizace chrome a vyžaduje aktualizovat chromedriver. Ve složce s šablonou spusťte npm update.