{"id":72355,"date":"2024-08-06T03:28:39","date_gmt":"2024-08-05T23:58:39","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/"},"modified":"2024-08-06T03:28:39","modified_gmt":"2024-08-05T23:58:39","slug":"testing-javascript-code-55ha","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/","title":{"rendered":"\u062a\u0633\u062a \u06a9\u062f \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a &#8211; \u0627\u0646\u062c\u0645\u0646 DEV"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u062a\u0633\u062a \u0628\u062e\u0634 \u0645\u0647\u0645\u06cc \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0627\u0633\u062a \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u06a9\u062f \u0645\u0637\u0627\u0628\u0642 \u0627\u0646\u062a\u0638\u0627\u0631 \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0639\u0627\u0631\u06cc \u0627\u0632 \u0646\u0642\u0635 \u0627\u0633\u062a.  \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u060c \u0637\u06cc\u0641 \u06af\u0633\u062a\u0631\u062f\u0647\u200c\u0627\u06cc \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0648 \u0686\u0627\u0631\u0686\u0648\u0628\u200c\u0647\u0627\u06cc \u062a\u0633\u062a \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062c\u0646\u0628\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062a\u0633\u062a \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647\u200c\u0627\u0646\u062f.  \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0631\u0648\u06cc\u06a9\u0631\u062f\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u062f \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u062a\u0633\u062a \u0648\u0627\u062d\u062f\u060c \u062a\u0633\u062a \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0633\u0627\u0632\u06cc\u060c \u0648 \u062a\u0633\u062a \u0627\u0646\u062a\u0647\u0627 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627\u060c \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc\u06cc \u0627\u0632 \u0686\u0627\u0631\u0686\u0648\u0628 \u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628 \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  \u0686\u0631\u0627 \u062a\u0633\u062a \u0645\u0647\u0645 \u0627\u0633\u062a<\/p>\n<p>\u062a\u0633\u062a \u06a9\u062f \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0686\u0646\u062f\u06cc\u0646 \u0645\u0632\u06cc\u062a \u062f\u0627\u0631\u062f\u060c \u0645\u0627\u0646\u0646\u062f:<\/p>\n<p>\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u06a9\u06cc\u0641\u06cc\u062a \u06a9\u062f: \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u062f\u0631\u0633\u062a\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u06a9\u062f \u0648 \u0645\u0637\u0627\u0628\u0642\u062a \u0628\u0627 \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<br \/>\n\u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0631\u06af\u0631\u0633\u06cc\u0648\u0646: \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u06cc \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u062e\u0631\u0627\u0628 \u06a9\u0646\u062f.<br \/>\n\u062a\u0633\u0647\u06cc\u0644 \u0628\u0627\u0632\u0622\u0641\u0631\u06cc\u0646\u06cc: \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627 \u0627\u06cc\u0646 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06a9\u0647 \u0628\u0627\u0632\u0622\u0641\u0631\u06cc\u0646\u06cc \u0628\u0627\u06af \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f<br \/>\n\u06a9\u062f \u0645\u0633\u062a\u0646\u062f\u0633\u0627\u0632\u06cc: \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u0633\u062a\u0646\u062f \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0648 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062f \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f.<br \/>\n\u0628\u0647\u0628\u0648\u062f \u0642\u0627\u0628\u0644\u06cc\u062a \u0646\u06af\u0647\u062f\u0627\u0631\u06cc: \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627 \u062d\u0641\u0638 \u0648 \u0627\u0631\u062a\u0642\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u0631\u0627 \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646 \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f <\/p>\n<p>  \u0627\u0646\u0648\u0627\u0639 \u062a\u0633\u062a<\/p>\n<p>\u062a\u0633\u062a \u0648\u0627\u062d\u062f: \u062a\u0633\u062a \u0648\u0627\u062d\u062f \u0628\u0631 \u0631\u0648\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u0639\u0645\u0644\u06a9\u0631\u062f\u0647\u0627 \u06cc\u0627 \u0627\u062c\u0632\u0627\u06cc \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062c\u0632\u0627 \u062a\u0645\u0631\u06a9\u0632 \u062f\u0627\u0631\u062f.  \u0647\u062f\u0641 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0634\u0648\u062f \u06a9\u0647 \u0647\u0631 \u0628\u062e\u0634 \u0627\u0632 \u06a9\u062f \u0628\u0647 \u062a\u0646\u0647\u0627\u06cc\u06cc \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u062a\u0633\u062a \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0633\u0627\u0632\u06cc: \u062a\u0639\u0627\u0645\u0644 \u0628\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u06cc\u0627 \u0627\u062c\u0632\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0634\u0648\u062f \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u06cc \u0631\u0648\u062f \u0628\u0627 \u0647\u0645 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f.<br \/>\n\u062a\u0633\u062a End-to-End (E2E): \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0648 \u06a9\u0644 \u062c\u0631\u06cc\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u062a\u0627 \u0627\u0646\u062a\u0647\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u062f\u06cc\u062f\u06af\u0627\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0631\u0641\u062a\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u062a\u0633\u062a \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc: \u0639\u0645\u0644\u06a9\u0631\u062f \u062e\u0627\u0635 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0634\u0648\u062f \u06a9\u0647 \u0645\u0634\u062e\u0635\u0627\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0628\u0631\u0622\u0648\u0631\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f<br \/>\n\u062a\u0633\u062a \u0631\u06af\u0631\u0633\u06cc\u0648\u0646: \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u06a9\u062f \u062c\u062f\u06cc\u062f \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u062e\u0631\u0627\u0628 \u0646\u0645\u06cc \u06a9\u0646\u062f<\/p>\n<p>  \u0686\u0627\u0631\u0686\u0648\u0628 \u0647\u0627\u06cc \u062a\u0633\u062a \u0645\u062d\u0628\u0648\u0628 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a<\/p>\n<p>Jest: \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u062c\u0627\u0645\u0639 \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0641\u06cc\u0633 \u0628\u0648\u06a9 \u062a\u0648\u0633\u0639\u0647 \u06cc\u0627\u0641\u062a\u0647 \u0627\u0633\u062a\u060c \u06a9\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u0647\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0633\u0647\u0648\u0644\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0648 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u060c \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc React \u0645\u062d\u0628\u0648\u0628\u06cc\u062a \u062e\u0627\u0635\u06cc \u062f\u0627\u0631\u062f.<br \/>\nMocha: \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u062a\u0633\u062a \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631 \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062a\u0633\u062a \u0647\u0627 \u0631\u0627 \u062f\u0631 Node.js \u0648 \u0645\u0631\u0648\u0631\u06af\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.  \u0627\u06cc\u0646 \u06cc\u06a9 \u067e\u0627\u06cc\u0647 \u0645\u062d\u06a9\u0645 \u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0646 \u062a\u0633\u062a \u0647\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f \u0627\u0645\u0627 \u0628\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0628\u0631\u0627\u06cc \u0627\u062f\u0639\u0627\u0647\u0627 \u0648 \u062a\u0645\u0633\u062e\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f.<br \/>\nJasmine: \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u062a\u0648\u0633\u0639\u0647 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0631\u0641\u062a\u0627\u0631 \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u062f \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u060c \u0628\u0627 \u06cc\u06a9 \u0646\u062d\u0648 \u062a\u0645\u06cc\u0632 \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u062f\u0639\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc<br \/>\nCypress: \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u062a\u0633\u062a \u0633\u0631\u062a\u0627\u0633\u0631 \u06a9\u0647 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f \u0648 \u06cc\u06a9 \u062a\u062c\u0631\u0628\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u062a\u0639\u0627\u0645\u0644\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.<br \/>\nPuppeteer: \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Node \u06a9\u0647 \u06cc\u06a9 API \u0633\u0637\u062d \u0628\u0627\u0644\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 Chrome \u06cc\u0627 Chromiu \u0628\u062f\u0648\u0646 \u0647\u062f \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>m\u060c \u0628\u0631\u0627\u06cc \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0645\u0631\u0648\u0631\u06af\u0631 \u0648 \u062a\u0633\u062a E2E \u0645\u0641\u06cc\u062f \u0627\u0633\u062a<\/p>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u062a\u0633\u062a<\/p>\n<p>  \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Jest \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0648\u0627\u062d\u062f<\/p>\n<p>  \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc:<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Jest\u060c \u0628\u0627\u06cc\u062f Node.js \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.  \u0633\u067e\u0633\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f Jest \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 NPM \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>npm install &#8211;save-dev jest<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc:<\/p>\n<p>\u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0647 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f package.json\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a:<\/p>\n<p>{<br \/>\n  &#8220;scripts&#8221;: {<br \/>\n    &#8220;test&#8221;: &#8220;jest&#8221;<br \/>\n  }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u062a\u0633\u062a \u0647\u0627\u06cc \u0648\u0627\u062d\u062f \u0646\u0648\u0634\u062a\u0627\u0631\u06cc:<\/p>\n<p>\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0633\u0627\u062f\u0647 \u062f\u0627\u0631\u06cc\u062f sum\u06a9\u0647 \u062f\u0648 \u0639\u062f\u062f \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<p>\/\/ sum.js<br \/>\nfunction sum(a, b) {<br \/>\n  return a + b;<br \/>\n}<\/p>\n<p>module.exports = sum;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f sum.test.js \u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0646 \u062a\u0633\u062a \u0647\u0627\u06cc \u0648\u0627\u062d\u062f \u0628\u0631\u0627\u06cc sum \u062a\u0627\u0628\u0639:<\/p>\n<p>\/\/ sum.test.js<br \/>\nconst sum = require(&#8216;.\/sum&#8217;);<\/p>\n<p>test(&#8216;adds 1 + 2 to equal 3&#8217;, () =&gt; {<br \/>\n  expect(sum(1, 2)).toBe(3);<br \/>\n});<\/p>\n<p>test(&#8216;adds -1 + -1 to equal -2&#8217;, () =&gt; {<br \/>\n  expect(sum(-1, -1)).toBe(-2);<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u062a\u0633\u062a \u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627:<\/p>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u062a\u0633\u062a \u0647\u0627 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>npm test<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>Jest \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0627 \u0622\u0646 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f .test.js\u06cc\u0627 .spec.js suffix.<\/p>\n<p>  \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0648\u06a9\u0627 \u0648 \u0686\u0627\u06cc \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634<\/p>\n<p>  \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc:<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0645\u0648\u06a9\u0627 \u0648 \u0686\u0627\u06cc \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>npm install &#8211;save-dev mocha chai<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u062a\u0633\u062a \u0647\u0627\u06cc \u0646\u0648\u0634\u062a\u0627\u0631\u06cc:<\/p>\n<p>\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u0634\u0645\u0627 \u0647\u0645 \u0647\u0645\u06cc\u0646 \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f sum \u062a\u0627\u0628\u0639.  \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f sum.test.js:<\/p>\n<p>\/\/ sum.js<br \/>\nfunction sum(a, b) {<br \/>\n  return a + b;<br \/>\n}<\/p>\n<p>module.exports = sum;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\/\/ sum.test.js<br \/>\nconst chai = require(&#8216;chai&#8217;);<br \/>\nconst expect = chai.expect;<br \/>\nconst sum = require(&#8216;.\/sum&#8217;);<\/p>\n<p>describe(&#8216;sum&#8217;, function() {<br \/>\n  it(&#8216;should return 3 when adding 1 and 2&#8217;, function() {<br \/>\n    expect(sum(1, 2)).to.equal(3);<br \/>\n  });<\/p>\n<p>  it(&#8216;should return -2 when adding -1 and -1&#8217;, function() {<br \/>\n    expect(sum(-1, -1)).to.equal(-2);<br \/>\n  });<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u062a\u0633\u062a \u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627:<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc Mocha \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0647 package.json \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>{<br \/>\n  &#8220;scripts&#8221;: {<br \/>\n    &#8220;test&#8221;: &#8220;mocha&#8221;<br \/>\n  }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u062a\u0633\u062a \u0647\u0627 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>npm test<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u062a\u0633\u062a \u0627\u0646\u062a\u0647\u0627 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627 \u0628\u0627 \u0633\u0631\u0648<\/p>\n<p>Cypress \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u062a\u0633\u062a \u0645\u062d\u0628\u0648\u0628 E2E \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u063a\u0646\u06cc \u0648 \u062a\u0639\u0627\u0645\u0644\u06cc \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc:<\/p>\n<p>Cypress \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 NPM \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>npm install &#8211;save-dev cypress<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc:<\/p>\n<p>Cypress \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>npx cypress open<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f cypress \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0627 \u0646\u0645\u0648\u0646\u0647 \u062a\u0633\u062a \u0647\u0627 \u0648 Cypress Test Runner \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  \u062a\u0633\u062a \u0647\u0627\u06cc \u0646\u0648\u0634\u062a\u0627\u0631\u06cc:<\/p>\n<p>\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u0628\u0627 \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \u062f\u0627\u0631\u06cc\u062f.  \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f login.spec.js:<\/p>\n<p>\/\/ login.spec.js<br \/>\ndescribe(&#8216;Login Page&#8217;, () =&gt; {<\/p>\n<p>##   it(&#8216;should display the login form&#8217;, () =&gt; {<\/p>\n<p>    cy.visit(&#8216;\/login&#8217;);<br \/>\n    cy.get(&#8216;form&#8217;).should(&#8216;be.visible&#8217;);<\/p>\n<p>  });<\/p>\n<p>  it(&#8216;should allow users to log in&#8217;, () =&gt; {<br \/>\n    cy.visit(&#8216;\/login&#8217;);<br \/>\n    cy.get(&#8216;input[name=&#8221;username&#8221;]&#8217;).type(&#8216;user&#8217;);<br \/>\n    cy.get(&#8216;input[name=&#8221;password&#8221;]&#8217;).<\/p>\n<p>## type<br \/>\n(&#8216;password&#8217;);<br \/>\n    cy.get(&#8216;button[type=&#8221;submit&#8221;]&#8217;).click();<br \/>\n    cy.url().should(&#8216;include&#8217;, &#8216;\/dashboard&#8217;);<br \/>\n  });<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u062a\u0633\u062a \u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627:<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a \u0647\u0627 \u0627\u0632 Cypress Test Runner \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>npx cypress open<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a<\/p>\n<p>\u0645\u0648\u0627\u0631\u062f \u062a\u0633\u062a \u0648\u0627\u0636\u062d \u0648 \u062a\u0634\u0631\u06cc\u062d\u06cc \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f: \u0627\u0632 \u0646\u0627\u0645 \u0647\u0627 \u0648 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0645\u0639\u0646\u06cc \u062f\u0627\u0631 \u0628\u0631\u0627\u06cc \u0645\u0648\u0627\u0631\u062f \u062a\u0633\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062f\u0631\u06a9 \u0647\u062f\u0641 \u0647\u0631 \u0622\u0632\u0645\u0648\u0646 \u0622\u0633\u0627\u0646 \u0634\u0648\u062f.<br \/>\n\u062a\u0633\u062a \u0647\u0627 \u0631\u0627 \u0645\u0633\u062a\u0642\u0644 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f: \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062a\u0633\u062a \u0647\u0627 \u0628\u0647 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0648\u0627\u0628\u0633\u062a\u0647 \u0646\u06cc\u0633\u062a\u0646\u062f \u0648 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0647\u0631 \u062a\u0631\u062a\u06cc\u0628\u06cc \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f.<br \/>\n\u0627\u0632 Mocks \u0648 Stubs \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f: \u0628\u0631\u0627\u06cc \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0648\u0627\u062d\u062f\u0647\u0627 \u0648 \u0627\u062c\u062a\u0646\u0627\u0628 \u0627\u0632 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u062e\u0627\u0631\u062c\u06cc\u060c \u0645\u0627\u0646\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0634\u0628\u06a9\u0647 \u06cc\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u060c \u062f\u0631 \u0637\u0648\u0644 \u0622\u0632\u0645\u0627\u06cc\u0634\u060c \u0627\u0632 mocks \u0648 stub \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<br \/>\n\u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u06a9\u0631\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f: \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u062a\u0648\u0633\u0639\u0647 \u0627\u062f\u063a\u0627\u0645 \u06a9\u0646\u06cc\u062f \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u06a9\u0631\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0645\u0634\u06a9\u0644\u0627\u062a \u0631\u0627 \u0632\u0648\u062f\u062a\u0631 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u06cc\u062f.<br \/>\n\u067e\u0648\u0634\u0634 \u062a\u0633\u062a \u0628\u0627\u0644\u0627 \u0631\u0627 \u062d\u0641\u0638 \u06a9\u0646\u06cc\u062f: \u067e\u0648\u0634\u0634 \u062a\u0633\u062a \u0628\u0627\u0644\u0627 \u0631\u0627 \u0647\u062f\u0641 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f \u062a\u0627 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0627\u06a9\u062b\u0631 \u0642\u0633\u0645\u062a\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u062a\u0633\u062a \u0634\u062f\u0647\u200c\u0627\u0646\u062f.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0631\u0648\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0628\u062d\u0631\u0627\u0646\u06cc \u0648 \u0645\u0648\u0627\u0631\u062f \u0644\u0628\u0647 \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u062f.<br \/>\n\u062a\u0633\u062a \u062e\u0648\u062f\u06a9\u0627\u0631: \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc Continuous Integration (CI) \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0631\u062f\u0646 \u062a\u0633\u062a \u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u062f\u0631 \u0647\u0631 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  \u0646\u062a\u06cc\u062c\u0647<\/p>\n<p>\u062a\u0633\u062a \u0628\u062e\u0634\u06cc \u0636\u0631\u0648\u0631\u06cc \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u06a9\u06cc\u0641\u06cc\u062a\u060c \u0642\u0627\u0628\u0644\u06cc\u062a \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u06a9\u062f \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0686\u0627\u0631\u0686\u0648\u0628\u200c\u0647\u0627\u06cc \u062a\u0633\u062a \u0645\u062d\u0628\u0648\u0628 \u0645\u0627\u0646\u0646\u062f Jest\u060c Mocha \u0648 Cypress\u060c \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627\u06cc \u062c\u0627\u0645\u0639\u06cc \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u0646\u062f \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0646\u062f \u06a9\u0647 \u062c\u0646\u0628\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0622\u0646\u0647\u0627 \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.  \u067e\u06cc\u0631\u0648\u06cc \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647 \u0647\u0627 \u0648 \u062d\u0641\u0638 \u06cc\u06a9 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u062a\u0633\u062a \u0642\u0648\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u06a9\u06cc\u0641\u06cc\u062a \u06a9\u0644\u06cc \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0631\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u062f \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0631\u0627 \u062f\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0648 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u06a9\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f.<\/p>\n<div data-article-id=\"1949046\" id=\"article-body\">\n<p>\u062a\u0633\u062a \u0628\u062e\u0634 \u0645\u0647\u0645\u06cc \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0627\u0633\u062a \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u06a9\u062f \u0645\u0637\u0627\u0628\u0642 \u0627\u0646\u062a\u0638\u0627\u0631 \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0639\u0627\u0631\u06cc \u0627\u0632 \u0646\u0642\u0635 \u0627\u0633\u062a.  \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u060c \u0637\u06cc\u0641 \u06af\u0633\u062a\u0631\u062f\u0647\u200c\u0627\u06cc \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0648 \u0686\u0627\u0631\u0686\u0648\u0628\u200c\u0647\u0627\u06cc \u062a\u0633\u062a \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062c\u0646\u0628\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062a\u0633\u062a \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647\u200c\u0627\u0646\u062f.  \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0631\u0648\u06cc\u06a9\u0631\u062f\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u062f \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u062a\u0633\u062a \u0648\u0627\u062d\u062f\u060c \u062a\u0633\u062a \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0633\u0627\u0632\u06cc\u060c \u0648 \u062a\u0633\u062a \u0627\u0646\u062a\u0647\u0627 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627\u060c \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc\u06cc \u0627\u0632 \u0686\u0627\u0631\u0686\u0648\u0628 \u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628 \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%DA%86%D8%B1%D8%A7_%D8%AA%D8%B3%D8%AA_%D9%85%D9%87%D9%85_%D8%A7%D8%B3%D8%AA\" >\u0686\u0631\u0627 \u062a\u0633\u062a \u0645\u0647\u0645 \u0627\u0633\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D8%A7%D9%86%D9%88%D8%A7%D8%B9_%D8%AA%D8%B3%D8%AA\" >\u0627\u0646\u0648\u0627\u0639 \u062a\u0633\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%DA%86%D8%A7%D8%B1%DA%86%D9%88%D8%A8_%D9%87%D8%A7%DB%8C_%D8%AA%D8%B3%D8%AA_%D9%85%D8%AD%D8%A8%D9%88%D8%A8_%D8%AC%D8%A7%D9%88%D8%A7_%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA\" >\u0686\u0627\u0631\u0686\u0648\u0628 \u0647\u0627\u06cc \u062a\u0633\u062a \u0645\u062d\u0628\u0648\u0628 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%DB%8C%DA%A9_%D9%85%D8%AD%DB%8C%D8%B7_%D8%AA%D8%B3%D8%AA\" >\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u062a\u0633\u062a<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Jest_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AA%D8%B3%D8%AA_%D9%88%D8%A7%D8%AD%D8%AF\" >\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Jest \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0648\u0627\u062d\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D9%86%D8%B5%D8%A8_%D9%88_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C\" >\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C\" >\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D8%AA%D8%B3%D8%AA_%D9%87%D8%A7%DB%8C_%D9%88%D8%A7%D8%AD%D8%AF_%D9%86%D9%88%D8%B4%D8%AA%D8%A7%D8%B1%DB%8C\" >\u062a\u0633\u062a \u0647\u0627\u06cc \u0648\u0627\u062d\u062f \u0646\u0648\u0634\u062a\u0627\u0631\u06cc:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D8%AA%D8%B3%D8%AA_%D9%87%D8%A7%DB%8C_%D8%AF%D8%B1_%D8%AD%D8%A7%D9%84_%D8%A7%D8%AC%D8%B1%D8%A7\" >\u062a\u0633\u062a \u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_%D9%85%D9%88%DA%A9%D8%A7_%D9%88_%DA%86%D8%A7%DB%8C_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%A2%D8%B2%D9%85%D8%A7%DB%8C%D8%B4\" >\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0648\u06a9\u0627 \u0648 \u0686\u0627\u06cc \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D9%86%D8%B5%D8%A8_%D9%88_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-2\" >\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D8%AA%D8%B3%D8%AA_%D9%87%D8%A7%DB%8C_%D9%86%D9%88%D8%B4%D8%AA%D8%A7%D8%B1%DB%8C\" >\u062a\u0633\u062a \u0647\u0627\u06cc \u0646\u0648\u0634\u062a\u0627\u0631\u06cc:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D8%AA%D8%B3%D8%AA_%D9%87%D8%A7%DB%8C_%D8%AF%D8%B1_%D8%AD%D8%A7%D9%84_%D8%A7%D8%AC%D8%B1%D8%A7-2\" >\u062a\u0633\u062a \u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D8%AA%D8%B3%D8%AA_%D8%A7%D9%86%D8%AA%D9%87%D8%A7_%D8%A8%D9%87_%D8%A7%D9%86%D8%AA%D9%87%D8%A7_%D8%A8%D8%A7_%D8%B3%D8%B1%D9%88\" >\u062a\u0633\u062a \u0627\u0646\u062a\u0647\u0627 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627 \u0628\u0627 \u0633\u0631\u0648<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D9%86%D8%B5%D8%A8_%D9%88_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-3\" >\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C-2\" >\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D8%AA%D8%B3%D8%AA_%D9%87%D8%A7%DB%8C_%D9%86%D9%88%D8%B4%D8%AA%D8%A7%D8%B1%DB%8C-2\" >\u062a\u0633\u062a \u0647\u0627\u06cc \u0646\u0648\u0634\u062a\u0627\u0631\u06cc:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D8%AA%D8%B3%D8%AA_%D9%87%D8%A7%DB%8C_%D8%AF%D8%B1_%D8%AD%D8%A7%D9%84_%D8%A7%D8%AC%D8%B1%D8%A7-3\" >\u062a\u0633\u062a \u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86_%D8%B1%D9%88%D8%B4_%D9%87%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AA%D8%B3%D8%AA_%D8%AC%D8%A7%D9%88%D8%A7_%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA\" >\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/nabfollower.com\/blog\/testing-javascript-code-55ha\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87\" >\u0646\u062a\u06cc\u062c\u0647<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"%DA%86%D8%B1%D8%A7_%D8%AA%D8%B3%D8%AA_%D9%85%D9%87%D9%85_%D8%A7%D8%B3%D8%AA\"><\/span>\n<p>  \u0686\u0631\u0627 \u062a\u0633\u062a \u0645\u0647\u0645 \u0627\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062a\u0633\u062a \u06a9\u062f \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0686\u0646\u062f\u06cc\u0646 \u0645\u0632\u06cc\u062a \u062f\u0627\u0631\u062f\u060c \u0645\u0627\u0646\u0646\u062f:<\/p>\n<ul>\n<li>\n<p>\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u06a9\u06cc\u0641\u06cc\u062a \u06a9\u062f: \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u062f\u0631\u0633\u062a\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u06a9\u062f \u0648 \u0645\u0637\u0627\u0628\u0642\u062a \u0628\u0627 \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>\u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0631\u06af\u0631\u0633\u06cc\u0648\u0646: \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u06cc \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u062e\u0631\u0627\u0628 \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>\u062a\u0633\u0647\u06cc\u0644 \u0628\u0627\u0632\u0622\u0641\u0631\u06cc\u0646\u06cc: \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627 \u0627\u06cc\u0646 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06a9\u0647 \u0628\u0627\u0632\u0622\u0641\u0631\u06cc\u0646\u06cc \u0628\u0627\u06af \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f<\/p>\n<\/li>\n<li>\n<p>\u06a9\u062f \u0645\u0633\u062a\u0646\u062f\u0633\u0627\u0632\u06cc: \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u0633\u062a\u0646\u062f \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0648 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062f \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0628\u0647\u0628\u0648\u062f \u0642\u0627\u0628\u0644\u06cc\u062a \u0646\u06af\u0647\u062f\u0627\u0631\u06cc: \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627 \u062d\u0641\u0638 \u0648 \u0627\u0631\u062a\u0642\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u0631\u0627 \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646 \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f <\/p>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D9%86%D9%88%D8%A7%D8%B9_%D8%AA%D8%B3%D8%AA\"><\/span>\n<p>  \u0627\u0646\u0648\u0627\u0639 \u062a\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li>\u062a\u0633\u062a \u0648\u0627\u062d\u062f: \u062a\u0633\u062a \u0648\u0627\u062d\u062f \u0628\u0631 \u0631\u0648\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u0639\u0645\u0644\u06a9\u0631\u062f\u0647\u0627 \u06cc\u0627 \u0627\u062c\u0632\u0627\u06cc \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062c\u0632\u0627 \u062a\u0645\u0631\u06a9\u0632 \u062f\u0627\u0631\u062f.  \u0647\u062f\u0641 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0634\u0648\u062f \u06a9\u0647 \u0647\u0631 \u0628\u062e\u0634 \u0627\u0632 \u06a9\u062f \u0628\u0647 \u062a\u0646\u0647\u0627\u06cc\u06cc \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\u062a\u0633\u062a \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0633\u0627\u0632\u06cc: \u062a\u0639\u0627\u0645\u0644 \u0628\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u06cc\u0627 \u0627\u062c\u0632\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0634\u0648\u062f \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u06cc \u0631\u0648\u062f \u0628\u0627 \u0647\u0645 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/li>\n<li>\u062a\u0633\u062a End-to-End (E2E): \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0648 \u06a9\u0644 \u062c\u0631\u06cc\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u062a\u0627 \u0627\u0646\u062a\u0647\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u062f\u06cc\u062f\u06af\u0627\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0631\u0641\u062a\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\u062a\u0633\u062a \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc: \u0639\u0645\u0644\u06a9\u0631\u062f \u062e\u0627\u0635 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0634\u0648\u062f \u06a9\u0647 \u0645\u0634\u062e\u0635\u0627\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0628\u0631\u0622\u0648\u0631\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>\u062a\u0633\u062a \u0631\u06af\u0631\u0633\u06cc\u0648\u0646: \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u06a9\u062f \u062c\u062f\u06cc\u062f \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u062e\u0631\u0627\u0628 \u0646\u0645\u06cc \u06a9\u0646\u062f<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"%DA%86%D8%A7%D8%B1%DA%86%D9%88%D8%A8_%D9%87%D8%A7%DB%8C_%D8%AA%D8%B3%D8%AA_%D9%85%D8%AD%D8%A8%D9%88%D8%A8_%D8%AC%D8%A7%D9%88%D8%A7_%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA\"><\/span>\n<p>  \u0686\u0627\u0631\u0686\u0648\u0628 \u0647\u0627\u06cc \u062a\u0633\u062a \u0645\u062d\u0628\u0648\u0628 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li>Jest: \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u062c\u0627\u0645\u0639 \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0641\u06cc\u0633 \u0628\u0648\u06a9 \u062a\u0648\u0633\u0639\u0647 \u06cc\u0627\u0641\u062a\u0647 \u0627\u0633\u062a\u060c \u06a9\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u0647\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0633\u0647\u0648\u0644\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0648 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u060c \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc React \u0645\u062d\u0628\u0648\u0628\u06cc\u062a \u062e\u0627\u0635\u06cc \u062f\u0627\u0631\u062f.<\/li>\n<li>Mocha: \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u062a\u0633\u062a \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631 \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062a\u0633\u062a \u0647\u0627 \u0631\u0627 \u062f\u0631 Node.js \u0648 \u0645\u0631\u0648\u0631\u06af\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.  \u0627\u06cc\u0646 \u06cc\u06a9 \u067e\u0627\u06cc\u0647 \u0645\u062d\u06a9\u0645 \u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0646 \u062a\u0633\u062a \u0647\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f \u0627\u0645\u0627 \u0628\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0628\u0631\u0627\u06cc \u0627\u062f\u0639\u0627\u0647\u0627 \u0648 \u062a\u0645\u0633\u062e\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f.<\/li>\n<li>Jasmine: \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u062a\u0648\u0633\u0639\u0647 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0631\u0641\u062a\u0627\u0631 \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u062f \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u060c \u0628\u0627 \u06cc\u06a9 \u0646\u062d\u0648 \u062a\u0645\u06cc\u0632 \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u062f\u0639\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc<\/li>\n<li>Cypress: \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u062a\u0633\u062a \u0633\u0631\u062a\u0627\u0633\u0631 \u06a9\u0647 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f \u0648 \u06cc\u06a9 \u062a\u062c\u0631\u0628\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u062a\u0639\u0627\u0645\u0644\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.<\/li>\n<li>Puppeteer: \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Node \u06a9\u0647 \u06cc\u06a9 API \u0633\u0637\u062d \u0628\u0627\u0644\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 Chrome \u06cc\u0627 Chromiu \u0628\u062f\u0648\u0646 \u0647\u062f \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.<\/li>\n<\/ol>\n<p>m\u060c \u0628\u0631\u0627\u06cc \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0645\u0631\u0648\u0631\u06af\u0631 \u0648 \u062a\u0633\u062a E2E \u0645\u0641\u06cc\u062f \u0627\u0633\u062a<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%DB%8C%DA%A9_%D9%85%D8%AD%DB%8C%D8%B7_%D8%AA%D8%B3%D8%AA\"><\/span>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u062a\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Jest_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AA%D8%B3%D8%AA_%D9%88%D8%A7%D8%AD%D8%AF\"><\/span>\n<p>  \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Jest \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0648\u0627\u062d\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<h4><span class=\"ez-toc-section\" id=\"%D9%86%D8%B5%D8%A8_%D9%88_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C\"><\/span>\n<p>  \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Jest\u060c \u0628\u0627\u06cc\u062f Node.js \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.  \u0633\u067e\u0633\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f Jest \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 NPM \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">npm<\/span> <span class=\"nx\">install<\/span> <span class=\"o\">--<\/span><span class=\"nx\">save<\/span><span class=\"o\">-<\/span><span class=\"nx\">dev<\/span> <span class=\"nx\">jest<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C\"><\/span>\n<p>  \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0647 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f <code>package.json<\/code>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"p\">{<\/span>\n  <span class=\"dl\">\"<\/span><span class=\"s2\">scripts<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">test<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">jest<\/span><span class=\"dl\">\"<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B3%D8%AA_%D9%87%D8%A7%DB%8C_%D9%88%D8%A7%D8%AD%D8%AF_%D9%86%D9%88%D8%B4%D8%AA%D8%A7%D8%B1%DB%8C\"><\/span>\n<p>  \u062a\u0633\u062a \u0647\u0627\u06cc \u0648\u0627\u062d\u062f \u0646\u0648\u0634\u062a\u0627\u0631\u06cc:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0633\u0627\u062f\u0647 \u062f\u0627\u0631\u06cc\u062f <code>sum<\/code>\u06a9\u0647 \u062f\u0648 \u0639\u062f\u062f \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ sum.js<\/span>\n<span class=\"kd\">function<\/span> <span class=\"nf\">sum<\/span><span class=\"p\">(<\/span><span class=\"nx\">a<\/span><span class=\"p\">,<\/span> <span class=\"nx\">b<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return<\/span> <span class=\"nx\">a<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">b<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">exports<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">sum<\/span><span class=\"p\">;<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>sum.test.js<\/code> \u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0646 \u062a\u0633\u062a \u0647\u0627\u06cc \u0648\u0627\u062d\u062f \u0628\u0631\u0627\u06cc <code>sum<\/code> \u062a\u0627\u0628\u0639:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ sum.test.js<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">sum<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.\/sum<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n\n<span class=\"nf\">test<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">adds 1 + 2 to equal 3<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nf\">expect<\/span><span class=\"p\">(<\/span><span class=\"nf\">sum<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">2<\/span><span class=\"p\">)).<\/span><span class=\"nf\">toBe<\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"nf\">test<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">adds -1 + -1 to equal -2<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nf\">expect<\/span><span class=\"p\">(<\/span><span class=\"nf\">sum<\/span><span class=\"p\">(<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">)).<\/span><span class=\"nf\">toBe<\/span><span class=\"p\">(<\/span><span class=\"o\">-<\/span><span class=\"mi\">2<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B3%D8%AA_%D9%87%D8%A7%DB%8C_%D8%AF%D8%B1_%D8%AD%D8%A7%D9%84_%D8%A7%D8%AC%D8%B1%D8%A7\"><\/span>\n<p>  \u062a\u0633\u062a \u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u062a\u0633\u062a \u0647\u0627 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">npm<\/span> <span class=\"nx\">test<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>Jest \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0627 \u0622\u0646 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f <code>.test.js<\/code>\u06cc\u0627 <code>.spec.js suffix.<\/code><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_%D9%85%D9%88%DA%A9%D8%A7_%D9%88_%DA%86%D8%A7%DB%8C_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%A2%D8%B2%D9%85%D8%A7%DB%8C%D8%B4\"><\/span>\n<p>  \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0648\u06a9\u0627 \u0648 \u0686\u0627\u06cc \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"%D9%86%D8%B5%D8%A8_%D9%88_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-2\"><\/span>\n<p>  \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0645\u0648\u06a9\u0627 \u0648 \u0686\u0627\u06cc \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">npm<\/span> <span class=\"nx\">install<\/span> <span class=\"o\">--<\/span><span class=\"nx\">save<\/span><span class=\"o\">-<\/span><span class=\"nx\">dev<\/span> <span class=\"nx\">mocha<\/span> <span class=\"nx\">chai<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B3%D8%AA_%D9%87%D8%A7%DB%8C_%D9%86%D9%88%D8%B4%D8%AA%D8%A7%D8%B1%DB%8C\"><\/span>\n<p>  \u062a\u0633\u062a \u0647\u0627\u06cc \u0646\u0648\u0634\u062a\u0627\u0631\u06cc:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u0634\u0645\u0627 \u0647\u0645 \u0647\u0645\u06cc\u0646 \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f <code>sum<\/code> \u062a\u0627\u0628\u0639.  \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>sum.test.js:<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ sum.js<\/span>\n<span class=\"kd\">function<\/span> <span class=\"nf\">sum<\/span><span class=\"p\">(<\/span><span class=\"nx\">a<\/span><span class=\"p\">,<\/span> <span class=\"nx\">b<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return<\/span> <span class=\"nx\">a<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">b<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">exports<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">sum<\/span><span class=\"p\">;<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ sum.test.js<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">chai<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">chai<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">expect<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">chai<\/span><span class=\"p\">.<\/span><span class=\"nx\">expect<\/span><span class=\"p\">;<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">sum<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.\/sum<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n\n<span class=\"nf\">describe<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">sum<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"kd\">function<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nf\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">should return 3 when adding 1 and 2<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"kd\">function<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nf\">expect<\/span><span class=\"p\">(<\/span><span class=\"nf\">sum<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">2<\/span><span class=\"p\">)).<\/span><span class=\"nx\">to<\/span><span class=\"p\">.<\/span><span class=\"nf\">equal<\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"nf\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">should return -2 when adding -1 and -1<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"kd\">function<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nf\">expect<\/span><span class=\"p\">(<\/span><span class=\"nf\">sum<\/span><span class=\"p\">(<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">)).<\/span><span class=\"nx\">to<\/span><span class=\"p\">.<\/span><span class=\"nf\">equal<\/span><span class=\"p\">(<\/span><span class=\"o\">-<\/span><span class=\"mi\">2<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">});<\/span>\n<span class=\"p\">});<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B3%D8%AA_%D9%87%D8%A7%DB%8C_%D8%AF%D8%B1_%D8%AD%D8%A7%D9%84_%D8%A7%D8%AC%D8%B1%D8%A7-2\"><\/span>\n<p>  \u062a\u0633\u062a \u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc Mocha \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0647 package.json \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"p\">{<\/span>\n  <span class=\"dl\">\"<\/span><span class=\"s2\">scripts<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">test<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">mocha<\/span><span class=\"dl\">\"<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u062a\u0633\u062a \u0647\u0627 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">npm<\/span> <span class=\"nx\">test<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B3%D8%AA_%D8%A7%D9%86%D8%AA%D9%87%D8%A7_%D8%A8%D9%87_%D8%A7%D9%86%D8%AA%D9%87%D8%A7_%D8%A8%D8%A7_%D8%B3%D8%B1%D9%88\"><\/span>\n<p>  \u062a\u0633\u062a \u0627\u0646\u062a\u0647\u0627 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627 \u0628\u0627 \u0633\u0631\u0648<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Cypress \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u062a\u0633\u062a \u0645\u062d\u0628\u0648\u0628 E2E \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u063a\u0646\u06cc \u0648 \u062a\u0639\u0627\u0645\u0644\u06cc \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D9%86%D8%B5%D8%A8_%D9%88_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-3\"><\/span>\n<p>  \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Cypress \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 NPM \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">npm<\/span> <span class=\"nx\">install<\/span> <span class=\"o\">--<\/span><span class=\"nx\">save<\/span><span class=\"o\">-<\/span><span class=\"nx\">dev<\/span> <span class=\"nx\">cypress<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C-2\"><\/span>\n<p>  \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Cypress \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">npx<\/span> <span class=\"nx\">cypress<\/span> <span class=\"nx\">open<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f <code>cypress<\/code> \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0627 \u0646\u0645\u0648\u0646\u0647 \u062a\u0633\u062a \u0647\u0627 \u0648 Cypress Test Runner \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B3%D8%AA_%D9%87%D8%A7%DB%8C_%D9%86%D9%88%D8%B4%D8%AA%D8%A7%D8%B1%DB%8C-2\"><\/span>\n<p>  \u062a\u0633\u062a \u0647\u0627\u06cc \u0646\u0648\u0634\u062a\u0627\u0631\u06cc:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u0628\u0627 \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \u062f\u0627\u0631\u06cc\u062f.  \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>login.spec.js<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ login.spec.js<\/span>\n<span class=\"nf\">describe<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Login Page<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n\n<span class=\"err\">##<\/span>   <span class=\"nf\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">should display the login form<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nf\">visit<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/login<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">form<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nf\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">be.visible<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"p\">});<\/span>\n\n  <span class=\"nf\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">should allow users to log in<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nf\">visit<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/login<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">input[name=\"username\"]<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nf\">type<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">user<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">input[name=\"password\"]<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span>\n\n<span class=\"err\">##<\/span> <span class=\"nx\">type<\/span>\n<span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">password<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">button[type=\"submit\"]<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nf\">click<\/span><span class=\"p\">();<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nf\">url<\/span><span class=\"p\">().<\/span><span class=\"nf\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">include<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">\/dashboard<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">});<\/span>\n<span class=\"p\">});<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B3%D8%AA_%D9%87%D8%A7%DB%8C_%D8%AF%D8%B1_%D8%AD%D8%A7%D9%84_%D8%A7%D8%AC%D8%B1%D8%A7-3\"><\/span>\n<p>  \u062a\u0633\u062a \u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a \u0647\u0627 \u0627\u0632 Cypress Test Runner \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">npx<\/span> <span class=\"nx\">cypress<\/span> <span class=\"nx\">open<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86_%D8%B1%D9%88%D8%B4_%D9%87%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AA%D8%B3%D8%AA_%D8%AC%D8%A7%D9%88%D8%A7_%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA\"><\/span>\n<p>  \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li>\u0645\u0648\u0627\u0631\u062f \u062a\u0633\u062a \u0648\u0627\u0636\u062d \u0648 \u062a\u0634\u0631\u06cc\u062d\u06cc \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f: \u0627\u0632 \u0646\u0627\u0645 \u0647\u0627 \u0648 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0645\u0639\u0646\u06cc \u062f\u0627\u0631 \u0628\u0631\u0627\u06cc \u0645\u0648\u0627\u0631\u062f \u062a\u0633\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062f\u0631\u06a9 \u0647\u062f\u0641 \u0647\u0631 \u0622\u0632\u0645\u0648\u0646 \u0622\u0633\u0627\u0646 \u0634\u0648\u062f.<\/li>\n<li>\u062a\u0633\u062a \u0647\u0627 \u0631\u0627 \u0645\u0633\u062a\u0642\u0644 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f: \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062a\u0633\u062a \u0647\u0627 \u0628\u0647 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0648\u0627\u0628\u0633\u062a\u0647 \u0646\u06cc\u0633\u062a\u0646\u062f \u0648 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0647\u0631 \u062a\u0631\u062a\u06cc\u0628\u06cc \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f.<\/li>\n<li>\u0627\u0632 Mocks \u0648 Stubs \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f: \u0628\u0631\u0627\u06cc \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0648\u0627\u062d\u062f\u0647\u0627 \u0648 \u0627\u062c\u062a\u0646\u0627\u0628 \u0627\u0632 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u062e\u0627\u0631\u062c\u06cc\u060c \u0645\u0627\u0646\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0634\u0628\u06a9\u0647 \u06cc\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u060c \u062f\u0631 \u0637\u0648\u0644 \u0622\u0632\u0645\u0627\u06cc\u0634\u060c \u0627\u0632 mocks \u0648 stub \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u06a9\u0631\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f: \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u062a\u0648\u0633\u0639\u0647 \u0627\u062f\u063a\u0627\u0645 \u06a9\u0646\u06cc\u062f \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u06a9\u0631\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0645\u0634\u06a9\u0644\u0627\u062a \u0631\u0627 \u0632\u0648\u062f\u062a\u0631 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u06cc\u062f.<\/li>\n<li>\u067e\u0648\u0634\u0634 \u062a\u0633\u062a \u0628\u0627\u0644\u0627 \u0631\u0627 \u062d\u0641\u0638 \u06a9\u0646\u06cc\u062f: \u067e\u0648\u0634\u0634 \u062a\u0633\u062a \u0628\u0627\u0644\u0627 \u0631\u0627 \u0647\u062f\u0641 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f \u062a\u0627 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0627\u06a9\u062b\u0631 \u0642\u0633\u0645\u062a\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u062a\u0633\u062a \u0634\u062f\u0647\u200c\u0627\u0646\u062f.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0631\u0648\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0628\u062d\u0631\u0627\u0646\u06cc \u0648 \u0645\u0648\u0627\u0631\u062f \u0644\u0628\u0647 \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u062a\u0633\u062a \u062e\u0648\u062f\u06a9\u0627\u0631: \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc Continuous Integration (CI) \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0631\u062f\u0646 \u062a\u0633\u062a \u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u062f\u0631 \u0647\u0631 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062a\u0633\u062a \u0628\u062e\u0634\u06cc \u0636\u0631\u0648\u0631\u06cc \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u06a9\u06cc\u0641\u06cc\u062a\u060c \u0642\u0627\u0628\u0644\u06cc\u062a \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u06a9\u062f \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0686\u0627\u0631\u0686\u0648\u0628\u200c\u0647\u0627\u06cc \u062a\u0633\u062a \u0645\u062d\u0628\u0648\u0628 \u0645\u0627\u0646\u0646\u062f Jest\u060c Mocha \u0648 Cypress\u060c \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627\u06cc \u062c\u0627\u0645\u0639\u06cc \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u0646\u062f \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0646\u062f \u06a9\u0647 \u062c\u0646\u0628\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0622\u0646\u0647\u0627 \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.  \u067e\u06cc\u0631\u0648\u06cc \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647 \u0647\u0627 \u0648 \u062d\u0641\u0638 \u06cc\u06a9 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u062a\u0633\u062a \u0642\u0648\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u06a9\u06cc\u0641\u06cc\u062a \u06a9\u0644\u06cc \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0631\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u062f \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0631\u0627 \u062f\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0648 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u06a9\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u062a\u0633\u062a \u0628\u062e\u0634 \u0645\u0647\u0645\u06cc \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0627\u0633\u062a \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u06a9\u062f \u0645\u0637\u0627\u0628\u0642 \u0627\u0646\u062a\u0638\u0627\u0631 \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0639\u0627\u0631\u06cc \u0627\u0632 \u0646\u0642\u0635 \u0627\u0633\u062a. \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u060c \u0637\u06cc\u0641 \u06af\u0633\u062a\u0631\u062f\u0647\u200c\u0627\u06cc \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0648 \u0686\u0627\u0631\u0686\u0648\u0628\u200c\u0647\u0627\u06cc \u062a\u0633\u062a \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062c\u0646\u0628\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062a\u0633\u062a \u0637\u0631\u0627\u062d\u06cc &hellip;<\/p>\n","protected":false},"author":2,"featured_media":72356,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-72355","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/72355","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=72355"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/72355\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/72356"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=72355"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=72355"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=72355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}