• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    KOJAProgramovani 40+
    SULTHAN
    SULTHAN --- ---
    VOY: Upřímně, to se týká prakticky každé FE komponenty, není to nijak specifické pro react. Na jednom projektu třeba máme jednoduché testy storybooku oproti mockům a jejich výsledek se screenshotuje. Nic to moc nebrzdí, ale při pull requestu člověk musí projít diffy a manuálně schválit všechny změny.
    Typový systém (tj. asi mluvíme o typescriptu) bych už dnes považoval za standard.

    Pro pobavení, teď nedávno mě ve firmě přizvali na post-mortem jednoho incidentu na projektu s obrovským technickým dluhem. Při buildování jim padala instalace NPM dependencí. Indové to vyřešili tak, že smazali package-lock a commitnuli to bez něj. Jako fakt. A spolu s tím začali řešit, že bude potřeba updatnout knihovny a mě si přizvali, abych jim poradil "jak na to". Když jsem zjistil, že tam mají React 13, který byl vydaný před 10 lety a v podstatě to ještě byla beta verze, tak jsem se jim na to vybodnul.
    VOY
    VOY --- ---
    SULTHAN: Za sebe bych rekl hlavne to, ze kdyz clovek nejakym zpusobem unit testuje reactove komponenty tak casto dojde do stavu, ze ho ty testy znacne brzdi v refaktorovani. Za sebe volim radeji kombinaci kontroly typovym systemem a E2E testu. Tam clovek ma z me zkusenosti vetsi jistotu, ze kdyz testy prochazi tak veci opravdu realne funguji.
    SULTHAN
    SULTHAN --- ---
    ALMAD: to by mě strašně zajímalo, co je specifického na Reactu?

    Každopádně ano, mezi FE a BE je na testech fakt velký rozdíl. Jsem toho názoru, že na čistém FE unit testy v praxi ani psát nejdou - respektive to jde maximálně ojebat nějakým snapshotováním, ale ne tak, aby ty testy šly napsat dopředu před implementací.
    SATAI
    SATAI --- ---
    VOY: prostě je to šikovné pravidlo, se kterým je potřeba zacházet jako se všemi šikovnými pravidly: "to záleží" ;-)
    ALMAD
    ALMAD --- ---
    VOY: Jo, ale to co pisu plati i o testech co se napisou po kodu.

    A znovu tady vytahnu ze vnimam velkej rozdil mezi tim, jak tyhle veci fungujou na BE, FE a pak ve specialni kategorii “React” :)
    VOY
    VOY --- ---
    ALMAD: Nejsem sokovany. Proto mi prijde vsechna ta ideologie o testech co se nesmi napsat pokud neprochazi ponekud akademicka. Zaroven fandim TDD, ale obavam se, ze jsem za svou karieru v tech potkal opravdu naproste minimum lidi co podle nej jedou. Myslim, ze to neni nahoda nebo vyber firem, proste to z nejakeho duvodu ve stretu s realitou neni moc prakticke. Smutnym faktem je, ze kdyz se blizi deadlines a zacne jit do tuheho tak testy se seskrtaji jako prvni. Znovu rikam, je to pouze pozorovani reality, ne muj nazor.
    ALMAD
    ALMAD --- ---
    VOY: Ano. Asi te to prekvapi, alr takovi lide existuji :D
    CERMI_FOX
    CERMI_FOX --- ---
    VOY: tomu se rika stret reality s ideologii :-)
    VOY
    VOY --- ---
    Urcite se vam nekdy stane, ze prijdete ke kodu, ktery funguje, chcete do nej udelat nejake zmeny a nema zadne testy. Pak prirozene clovek dopisuje testy, ktere prochazi. Chce to nepochybne obezretnost, aby skutecne testovaly co maji, ale takove momenty taky prichazi. Vetsinou AI naznacim kodem co sam napisu jak bych si to asi predstavoval hlavne co se tyce mockovani a pak uz to typicky funguje slusne. From scratch bychom se ale asi daleko nedostali a nebo s hroznou kvalitou kodu.
    JARDABEREZA
    JARDABEREZA --- ---
    AXTHEB: Já TDD dělal jenom když jsem psal binární parser a bylo přesně jasné co je vstup a výstup už odzačátku. (ale nic proti lidem co TDD dělají všude). Asi si to neumím promyslet tak moc dopředu v souvislostech. Anebo je naše práce rozdílná a dává to u tebe větší smysl.

    Takže pak ty testy dělám proto, abych mohl změnit/refaktorovat všechno s jistotou, že mi to pak někdo naomlátí ohlavu a nevysype na mě pytel chyb :-D

    Anebo u týmové práce při nastavené pipeline je pak jasně vidět čí comit to rozbil :-D
    SULTHAN
    SULTHAN --- ---
    Teď jsem nedávno dělal review pull requestu, kde byly FE testy (playwright) vygenerovaný přes AI, a bylo to utrpení. Jako jo, nějak se to UI prokliká, ale kód to byl příšerný - elementy se hledaly přes nějaké strašně složitě zanořené CSS selektory a byly tam úplně WTF věci, jako třeba try-catch uvnitř testu (asi aby test nefailnul) nebo prostý return (konec testu) pokud se element nenašel.
    AXTHEB
    AXTHEB --- ---
    VOY: No, každý test, který napíšeš a rovnou prochází je test, který by neměl existovat.
    Test píšeš buď abys ukázal jaká funkcionalita ti chybí a dopsal jí, nebo abys ověřil, že nějaká chyba je opravdu to, co myslíš že je a pak jí opravil.
    CERMI_FOX
    CERMI_FOX --- ---
    VOY: bud jak pise Jardabereza, nebo jet dvojfazove - nejdriv at vygeneruje md s testcasama, ty mu promazes a opravis a pak ho nechas at podle toho ty testy udela. Je fajn zacit u jednoho dvou, u nej odladit mocky a strukturu a pak ho pustit na ty ostatni
    JARDABEREZA
    JARDABEREZA --- ---
    VOY: To mi taky fungovalo, založil jsem prázdný soubor na testy s odpovídajícím jménem. A pak jen spustit "GitHub Copilot: Generate Tests" a ono to něco udělá. Ale nebyl jsem s tím úplně spokojený. Vyšlo mi líp napsat jeden vzorový a pak ty další vypadali víc podle toho prvního, takže to např. nemockovalo, pochopilo jaké property má ten objekt atd.
    VOY
    VOY --- ---
    Nevim jak bych mel postupovat, aby mi to generovalo testy co nemaji vzniknout. Jako ze bych tomu dal soubor a rekl "napis proste nejaky testy" nebo jak?
    ALMAD
    ALMAD --- ---
    JARDABEREZA: Klicovy je to “kdZ to clovek zkontroluje”.

    IMHO hlavni uzitecnost testu je ten design proces, a osobne neverim zadnymu testu kterej sem nwvidel failnout.

    Pokud to clovek nedela, tak se imho ma aspon na unit testy vykaslat a zustat u tech integracnich/system testu (kde teda llm umi pomoct dost).
    ALMAD
    ALMAD --- ---
    AXTHEB: Da se to pomasirovat contextem, a je to celkem uzitecny na integracni testy typu cypress.

    Ale obecne v prumeru souhlas, vychozi stav je ze to generuje testy co nemaj existovat. Navic kdyz agent iteruje nad padajicima testama, tak pokud ho explicitne nenavigujes, tak klidne skoncis s tim ze vsechno co pada zamockuje a skoncis s assert true == true, akorat na padesati radkach a naprosto nezjevnym zpusobem.

    Delat v dnesni dobe code reviews je radost, to nemohu rict.
    JARDABEREZA
    JARDABEREZA --- ---
    AXTHEB: Jasné. Občas jsem viděl, že těch testů je tam zbytečně moc, tak z těch generovaných jsem třeba půlku smazal.
    AXTHEB
    AXTHEB --- ---
    Plus teda já jsem zástupce TDD, takže napsat test který prochází je podle mě zbytečnost.
    AXTHEB
    AXTHEB --- ---
    JARDABEREZA: No navrhne ti hromady testů na každou blbost, takže když budeš chtít něco zrefaktorovat, tak ti začnou padat testy, i když se chování appky jako takové nezmění.
    Případně se to změní business požadavky, takže něco, co mělo být kladné číslo najednou může být i záporné, tak to změníš a najednou ti popadají zástupy testů.
    Kliknutím sem můžete změnit nastavení reklam