با GitLab CI/CD میتوانید همه مراحلی را که برای build، test و deploy کردن کد لازم است، خودکار کنید. تیمها معمولاً از GitLab برای نگهداری source code استفاده میکنند و با قابلیتهای CI/CD، با ساختن pipelineها، فرایند build و test کد را قبل از deploy شدن سادهتر و منظمتر انجام میدهند.
تیمها معمولاً در بخشی از pipeline، تستهای خودکارشان را اجرا میکنند. برای اینکه دید بهتری نسبت به automated testها داشته باشید و بتوانید همه test caseها و test resultها، چه manual و چه automated، را راحتتر مدیریت کنید، میتوانید نتایج تستهای خودکار را مستقیم از GitLab به TestRail ارسال کنید. در این مقاله بررسی میکنیم چطور میتوانید از GitLab CI/CD و TestRail CLI برای انجام ساده این کار استفاده کنید.
#
در این مثال، از GitLab CI/CD همراه با Playwright استفاده میکنیم.
اگر میخواهید نمونههای بیشتری ببینید، به Automation Frameworks Integration نگاهی بیندازید .gitlab-ci.yml فایل.
استفاده از TestRail CLI در pipelineهای GitLab #
برای ساختن pipeline در GitLab، میتوانید یک .gitlab-ci.yml فایل را به ریشه repository در GitLab اضافه کنید. این فایل به شما اجازه میدهد فرایندها را با syntax زبان YML بهصورت ساختاریافته تعریف کنید. همچنین میتوانید stageهای مختلف pipeline را با jobهایی تعریف کنید که بهصورت ترتیبی یا موازی اجرا میشوند.
سادهترین راه برای یکپارچهسازی TestRail با GitLab CI/CD این است که TestRail CLI را طوری تنظیم کنید که در یکی از stageهای .gitlab-ci.yml فایل، test resultهای خودکار را به TestRail ارسال کند. در ادامه نمونهای از یک pipeline در GitLab را میبینید که از Playwright بهعنوان test automation framework و از TestRail CLI برای ارسال test resultها به TestRail استفاده میکند.
stages:
- playwright_tests
- trcli_results_upload
playwright_tests:
stage: playwright_tests
image: node:latest
artifacts:
when: always
paths:
- test-results/
allow_failure: true
script:
- npm install
- npx playwright install-deps
- npx playwright install
- npx playwright test
trcli_results_upload:
stage: trcli_results_upload
image: python:latest
dependencies:
- playwright_tests
script: |
pip install trcli
trcli -y \
-h https://TESTRAIL_INSTANCE.testrail.io/ \
--project "PROJECT NAME" \
-u USER_EMAIL \
-p PASSWORD \
parse_junit \
-f "test-results/junit-report.xml" \
--run-description "URL: $CI_PIPELINE_URL" \
--title "Automated Tests from GitLab CI/CD"
اگر فایل را بررسی کنیم، چند نکته هست که باید به آنها توجه کنید:
- در این فایل pipeline، دو job تعریف شده است:
۱.playwright_testsجایی که project نمونه تستهای خودکارمان را اجرا میکنیم
۲.trcli_results_uploadجایی که نتایج تولیدشده را در TestRail آپلود میکنیم - بهطور پیشفرض، jobها بهصورت موازی اجرا میشوند. در اینجا میخواهیم نتایج بعد از پایان اجرای automated testها ارسال شوند، بنابراین از
stagesبخش برای مشخص کردن ترتیب اجرای jobها استفاده میکنیم. - برای بهاشتراکگذاری artifactهای تولیدشده، که در اینجا همان فایل نتایج JUnit است،
artifactspath را درplaywright_testsjob تعریف میکنیم و آن را درdependenciesبخش مربوط بهtrcli_results_uploadjob تنظیم میکنیم.
#
در این مثال، اجرای تستها و آپلود نتایج در دو job جداگانه انجام میشود، چون از تکنولوژیهای متفاوتی استفاده میکنند و هرکدام به container مناسب خود نیاز دارند image تا اجرا شوند. اگر میخواهید هر دو کار را در یک job انجام دهید، باید containerی بسازید که هم Node.js و هم Python را داشته باشد.
برای آشنایی بیشتر با قابلیتهای pipeline میتوانید به مستندات رسمی GitLab CI/CD مراجعه کنید.
مرحله ۱: اجرای testهای خودکار Playwright #
این playwright_tests job روی یک container مبتنی بر Node.js اجرا میشود؛ محیطی که فناوریهای اصلی لازم برای اجرای Playwright را در اختیار دارد.
همانطور که قبلاً گفته شد، artifacts این parameter لازم است تا گزارش JUnit در job بعدی در دسترس باشد و TestRail CLI بتواند آن را parse کند. به when: always parameter توجه کنید؛ این مورد لازم است تا artifacts حتی در صورتی که job به دلیل fail شدن testهای خودکار ناموفق شود، همچنان نگه داشته شوند. همچنین paths parameter شامل فهرست pathهایی است که میخواهیم در دسترس قرار دهیم؛ در اینجا منظور test-results/ folder است، یعنی همان جایی که project مربوط به Playwright را طوری تنظیم کردهایم که گزارش JUnit را در آن خروجی بگیرد.
این allow_failure parameter برای این استفاده میشود که pipeline حتی در صورت fail شدن testها، مرحله بعدی را هم اجرا کند تا نتیجه testها در TestRail آپلود شود.
این script بخش شامل فهرستی از shell commandها است؛ ابتدا project مربوط به Playwright و dependencyهای آن نصب میشوند و در پایان testهای خودکار اجرا میشوند.
playwright_tests:
stage: playwright_tests
image: node:latest
artifacts:
when: always
paths:
- test-results/
allow_failure: true
script:
- npm install
- npx playwright install-deps
- npx playwright install
- npx playwright test
مرحله ۲: آپلود نتایج در TestRail #
این trcli_upload_results job یک shell script را روی یک container پایتون اجرا میکند تا TestRail CLI را نصب و اجرا کند، گزارش JUnit تولیدشده توسط Playwright را parse کند و نتایج را به TestRail بفرستد.
این dependencies parameter لازم است تا این job به playwright_tests فایل نتایج JUnit دسترسی داشته باشد؛ فایلی که برای آپلود نتایج ضروری است.
TestRail CLI یک package پایتون است که در Python Package Index میزبانی میشود (PyPI)؛ بنابراین برای نصب آن کافی است دستور مربوطه را اجرا کنیم pip install trcli.
بعد از نصب TestRail CLI، چند argument اجباری وجود دارد؛ از جمله آدرس instance و credentials مربوط به TestRail، projectی که میخواهید نتایج را در آن ثبت کنید، عنوان test run و path گزارش JUnit. argument مربوط به توضیحات run اجباری نیست، اما پیشنهاد میکنیم از آن برای اضافه کردن link از TestRail به اجرای pipeline در GitLab استفاده کنید. این link را میتوان با استفاده از variable ازپیشتعریفشده GitLab به دست آورد $CI_PIPELINE_URL ، مانند snippet زیر.
برای اطلاعات بیشتر درباره argumentها، لطفاً مستندات TestRail CLI را ببینید.
trcli_results_upload:
stage: trcli_results_upload
image: python:latest
dependencies:
- playwright_tests
script: |
pip install trcli
trcli -y \
-h https://TESTRAIL_INSTANCE.testrail.io/ \
--project "PROJECT NAME" \
-u USER_EMAIL \
-p PASSWORD \
parse_junit \
-f "test-results/junit-report.xml" \
--run-description "URL: $CI_PIPELINE_URL" \
--title "Automated Tests from GitLab CI/CD"
راهاندازی نمونه کاری خودتان #
برای استفاده از pipelineهای GitLab CI/CD، باید یک حساب فعال در GitLab داشته باشید و کدتان هم در همانجا میزبانی شده باشد.
ساخت repository خودتان #
در این راهنما GitLab pipeline را با استفاده از sample project مربوط به Playwright راهاندازی میکنیم. برای آشنایی بیشتر با آن، میتوانید مستندات ما درباره ادغام با Playwright را ببینید.
با دنبال کردن مراحل زیر، میتوانید بهسرعت یک نمونه عملی از GitLab pipeline راهاندازی کنید که یک project تست خودکار را اجرا میکند و نتایج را به TestRail میفرستد.
- یک project جدید در GitLab ایجاد کنید
- project تازهای را که ایجاد کردهاید clone کنید روی دستگاه local خودتان
- فایلهای موجود در نمونه project Playwright را دانلود کنید و آنها را به project local خود اضافه کنید
- یک
.gitlab-ci.ymlفایل در root پروژه خود ایجاد کنید و نمونه pipeline snippet ارائهشده در این مقاله را به آن اضافه کنید - مقادیر TESTRAIL_INSTANCE ، PROJECT NAME ، USER_EMAIL و PASSWORD را در محتوای فایل با اطلاعات خودتان جایگزین کنید. توصیه میکنیم password را مستقیماً در فایل قرار ندهید و بهجای آن از GitLab variables استفاده کنید
- فایلهای خود را به repository پروژهتان push کنید در GitLab
اجرای pipeline #
- این pipeline برای CI/CD طراحی شده است؛ یعنی هر بار که commit جدیدی ثبت شود اجرا میشود. اولین باری که کد خود را به GitLab push میکنید، pipeline بلافاصله اجرا میشود، project تستهای خودکار را اجرا میکند و نتایج را به TestRail میفرستد. برای دیدن pipeline خود، از پنل سمت چپ به بخش CI/CD > Pipelines بروید. باید جزئیات اجرای اولین pipeline را ببینید و اگر همه چیز طبق انتظار اجرا شده باشد، pipeline باید با warning پاس شده باشد.
- با کلیک روی status pipeline، صفحه جدیدی با جزئیات بیشتر اجرا نمایش داده میشود و نمای کلی pipeline را نشان میدهد؛ این pipeline از
playwright_testsjob که failed شده است وtrcli_results_uploadjob که با موفقیت اجرا شده است تشکیل شده، همانطور که در تصویر زیر میبینید.
- با کلیک روی
playwright_testsjob، میتوانید جزئیات اجرای آن job، مثل مدتزمان اجرا، artifacts و console logs را ببینید. با یک مرور سریع در console logs میبینیم که ۱ test شکست خورده است و به همین دلیل خود job هم failed شده است.
- با کلیک روی
trcli_results_uploadjob، میتوانید همین اطلاعات را ببینید. با بررسی logs و خروجی TestRail CLI متوجه میشویم که ۷ test result به TestRail ارسال شده و یک URL هم برای رفتن به test runی که این نتایج در آن ثبت شدهاند در دسترس است.
- با کلیک روی URL موجود در logs، میتوانیم مستقیم وارد TestRail شویم و test run تازه ایجادشده را همراه با همه test resultهای project تست خودکار Playwright ببینیم. همچنین به URL برگشت به GitLab pipeline هم توجه کنید؛ این لینک برای حفظ traceability مفید است، مخصوصاً اگر لازم باشد مشکلاتی را که در طول آن test run رخ دادهاند debug کنید.

- همانطور که قبلاً گفته شد، بعد از اولین push کد test automation، میتوانید یک pipeline را ببینید که بهصورت خودکار با commit شما trigger شده است. اگر بخواهید automated test caseهای خود را دوباره، بدون هیچ تغییری در کد project اتوماسیون، اجرا کنید، میتوانید با کلیک روی Run pipeline در صفحه اصلی، branch موردنظر برای اجرا را انتخاب کنید و آن run را submit کنید.
گام بعدی چیست؟ #
حالا که نتایج تستهای خود را در TestRail متمرکز کردهاید، میتوانید نتایج test runهای خودکار و پیامهای خطای تستهای ناموفق را بررسی کنید. علاوه بر این، میتوانید فعالیتهای تست دستی و خودکار را در گزارشهایی کنار هم ببینید که پوشش کامل تست برای اپلیکیشن شما را نشان میدهند و حتی روند پیشرفت test automation را دنبال میکنند. همچنین درست مثل نتایج تست دستی، میتوانید bug را مستقیماً از نتیجه تست خودکار در issue tracker دلخواه خود ثبت کنید.
میتوانید ویدیوی Reports and Test Metrics در TestRail را ببینید تا با روش استفاده از قابلیتهای گزارشدهی TestRail آشنا شوید.


