рдЯрд┐рдлрд╝рдСрдлрд╝ рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реНрд░реЛрдиреЛрдВ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди, рдпрд╛ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдХрдард┐рди рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд▓рдЪреАрд▓реЗ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдХреНрд░реЛрдлреНрд░реЗрдиреНрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдХрд┐рд╕реА рднреА рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд░реВрдк рдореЗрдВ, рдорд╛рдЗрдХреНрд░реЛрдлрд╝реНрд░реЛрдиреНрдб рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдШрдЯрдХреЛрдВ рдХреЗ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред


рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдФрд░ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдЗрдВрддрдЬрд╛рд░ рд╣реИ, рдЬреЛ рдорд╛рдЗрдХреНрд░реЛрдлреНрд▓реЛрд░реЗрдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдЬрдм рдХрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреБрдХрдбрд╝реЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдЗрдХрдЯреНрдареЗ рдХрд┐рдП рдЧрдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?



рдЕрд░реЗред рдореЗрд░рд╛ рдирд╛рдо рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рд╡реЛрд░реЛрдмреА рд╣реИ, рдореИрдВ рдЯрд┐рдВрдХреЙрдл рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рдореЗрдВ рдПрдХ рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реВрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ рдХрд┐ рд╣рдордиреЗ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрд░реНрд╕ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рди рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛, рд╣рдореЗрдВ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рд╣рдореЗрдВ рдХреНрдпрд╛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗред


рдпрд╣ рд▓реЗрдЦ рд╣рд╛рдЗрдЬреЗрдирдмрдЧ рд╕рдореНрдореЗрд▓рди рдХреА рдореЗрд░реА рд░рд┐рдкреЛрд░реНрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ ред рдЗрд╕рдореЗрдВ рджреЛ рдЦрдВрдб рд╣реЛрддреЗ рд╣реИрдВ:


  1. рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╡рд┐рд╖рдп рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдкрд╕рдВрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдХрд╣рд╛рдиреАред
  2. рд╕реНрд╡рдЪрд╛рд▓рди: рд╡рд┐рдзрд┐рдпрд╛рдБ, рд╕рдорд╕реНрдпрд╛рдПрдВ рдФрд░ рдЙрдирдХреЗ рд╕рдорд╛рдзрд╛рдиред

рдЬреЛ рд▓реЛрдЧ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдорд╛рдЗрдХреНрд░реЛрдлреНрд░рдВрдЯреЗрдВрдб рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ "рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЙрд░реЗрдиреНрдб рдкрд░реАрдХреНрд╖рдг" рдЕрдиреБрднрд╛рдЧ рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред


рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╡рд┐рд╖рдп


тАФ . .


тАФ , , тАФ . ( ) , . тАФ .



, , , :


  • . F5 тАФ . , .
  • , , .
  • . тАФ , тАФ , тАФ .
  • .

20 ( , ). : , , , . , , Form Builder, . Form Builder



. , тАФ . тАФ , . , , , . .


, . , , , UI.


. тАФ .
:


  1. .
  2. .
  3. .


QA- . , , , - .


, , Storybook.


Storybook:



:


  • Stories тАФ . тАФ Story.
  • , , .
  • Knobs тАФ props, live- , .
  • тАФ , , .

:


  • , (, , -, , ) , .
  • , , , .
  • . .


:


  • , тАФ Puppeteer, WebdriverIO ( wdio). Wdio Firefox, Safari IE 11.
  • Allure Report.
  • .

CodeceptJS. , , тАФ Puppeteer, WebDriverIO, Appium Playwright, тАФ .


:


Scenario('   ,   ', async (I) => {
  await I.amOnStory(stories('url'))

  await I.fillField(' ', '01.01.1990')
  await I.fillField('   ', '1111111111')
  await I.fillField('   ', '01.01.2008')
  await I.fillField('   ', '2008')

  await I.clearFieldBySymbols(' ', 1)
  await I.appendFieldManual(' ', '9')

  await I.seeFieldErrorMessage('   ')
  await I.seeFieldErrorMessage('   ')
})

, . Allure-, , , .


?


  • Cypress. , , Cypress , ( ).
  • Wdio. -, , Wdio . -, тАФ , . ┬л┬╗ .
  • Puppeteer. , . , Wdio, Puppeteer.

CodeceptJS.



, CI/CD Gitlab, -, Gitlab, .


, , , -.



, , .


? , . , , , . , , . , .


, , -. , , -, , .



тАФ . тАФ !



:


  • . тАФ .
  • Form Builder` ( , ).
  • . .
  • .

.



, , , .


, , тАФ .


- , : , , -, . , , (), , , .


, LFS. , , , - ( ) , , . , .


Storybook, . Storybook:


  • Master Storybook тАФ Storybook , . .
  • Merge Request Storybook тАФ Storybook .
    Master Storybook , . git .

, , , , API тАФ window.__STORYBOOK_CLIENT_API.getStorybook(). API , . , . nodejs API .


:


const html = fs.readFileSync(`${normalizedPath}/iframe.html`, { encoding: 'utf8' });
const htmlDom = new JSDOM(html);
const scripts = htmlDom.window.document.querySelectorAll('script');
scripts.forEach((script) => {
  if (script.src && script.src.endsWith('bundle.js')) {
    require(path.resolve(normalizedPath, script.src));
  }
});
window.__STORYBOOK_CLIENT_API__.getStorybook().forEach((story) => {...})

тАФ js-, require js- node, node API .


, .

, CodeceptJS, :


. :


  • .
  • .
  • ().
  • .
  • .

. .
тАФ .


:


42 3 . , !


, 2 14 . , .


API , тАФ window.__STORYBOOK_CLIENT_API__._storyStore.setSelection(). , id, тАФ .


, тАФ , 3 , 554 :


:


  • . тАФ .
  • .
  • !

Form Builder`


, 20+ . - Form Builder , Form Builder . Form Builder.


:


  • git- ;
  • yarn.

, git clone. yarn link form-builder From Builder, . Happy-path .


Form Builder, , .



From Builder jobs 30 , 50 . , , .


, , , тАФ (Puppeteer Wdio). , karma.


?


Puppeteer Wdio CDP (Chrome DevTools Protocol) WebDriver Protocol . Puppeteer type, API. : "Sends a keydown, keypress/input, and keyup event for each character in the text". Puppeteer DevTools . , - .


( karma) :


  • index.html (, webpack ).
  • , localhost.
  • localhost, , .
  • Web API.

Form Builder karma, 70 3 366 50 .


:

:


:


  • DOM (Web API), , Puppeteer Wdio.
  • (). , .
  • . ? .
  • тАФ .
  • . dispatch- .

, .



, , тАФ .


- , , . , 1000 , -, , - . .


, lerna, , , , . , .


:


  • .
  • -, .
  • - .
  • , -, - , 100% .
    тАФ , unit-.

:


  • тАФ .
  • тАФ .


:


  • .
  • .
  • - тАФ .
  • .
  • , Puppeteer Playwright.
  • core .

All Articles