انقل مجموعة اختبارات Playwright من Applitools Eyes إلى Delta-QA
تعمل مجموعة اختبارات Playwright المكتوبة لـ Applitools Eyes على Delta-QA بعد تغييرين: الاستيراد ومتغيرات البيئة. وتبقى eyes.open وcheck وclose وBatchInfo وaddBrowser والمناطق كما هي.
التثبيت، وتغيير الاستيراد
تعتمد واجهة Eyes البرمجية في @delta-qa/vision أسماء Applitools Eyes الخاصة بـ Playwright ومعانيها. وتتطلب Node.js 22 أو أحدث و@playwright/test 1.62 أو أحدث.
تتوفر حزمة Vision SDK أولًا بالوصول المبكر: تواصل معنا لاستخدامها في مجموعة اختباراتك. اطلب الوصول إلى Vision
| Applitools | Delta-QA |
|---|---|
import { test } from "@applitools/eyes-playwright/fixture"; | import { test } from "@delta-qa/vision/eyes/fixture"; |
import type { EyesFixture } from "@applitools/eyes-playwright/fixture"; | import type { EyesFixture } from "@delta-qa/vision/eyes/fixture"; |
import { Eyes, Target, … } from "@applitools/eyes-playwright"; | import { Eyes, Target, … } from "@delta-qa/vision/eyes"; |
يبقى eyesConfig في playwright.config كما هو. ومع الـ fixture، لا يغيّر الاختبار سوى الاستيراد:
// import { test } from "@applitools/eyes-playwright/fixture";
import { test } from "@delta-qa/vision/eyes/fixture";
test("checkout", async ({ page, eyes }) => {
await page.goto("https://shop.example/cart");
await eyes.check("Cart", { fully: true });
}); // opened before the test, closed by the fixtureاضبط متغيرات البيئة
| المتغير | يُقرأ من أجل |
|---|---|
DELTAQA_API_KEY | مفتاح API لمساحة عمل Delta-QA الخاصة بك (dqa_…)، بالدور «Can edit»، يُنشأ من Settings → Workspace → API keys. احفظه في سرّ ضمن CI. |
APPLITOOLS_API_KEY | يُقرأ عندما لا يكون DELTAQA_API_KEY مضبوطًا: احتفظ بالمتغير، وأعطه مفتاح Delta-QA. |
DELTAQA_SERVER_URL | خادم Delta-QA الخاص بك، لتثبيت On-Premise؛ وسحابة Delta-QA عند عدم ضبطه. لا يُقرأ APPLITOOLS_SERVER_URL أبدًا. |
APPLITOOLS_BATCH_ID | الإصدار المختبَر — أي الـ commit. ويتقدّم عليه id الدفعة المحدد في الشيفرة البرمجية. |
APPLITOOLS_BRANCH | الفرع. ويتقدّم عليه setBranchName في الشيفرة البرمجية. |
APPLITOOLS_PARENT_BRANCHAPPLITOOLS_BASELINE_BRANCH | الفرع الأساسي، الذي يُستخدم مرجعه ما دام الفرع بلا مرجع. يتقدّم APPLITOOLS_BASELINE_BRANCH على APPLITOOLS_PARENT_BRANCH؛ والشيفرة البرمجية تتقدّم على كليهما. |
تُقرأ أيضًا صيغ _NAME لمتغيرات الفرع (APPLITOOLS_BRANCH_NAME وAPPLITOOLS_PARENT_BRANCH_NAME وAPPLITOOLS_BASELINE_BRANCH_NAME). ويُعامَل المتغير الفارغ كمتغير غير مضبوط. وبدون مفتاح، يفشل فتح الاختبار ويسمّي المتغير الواجب ضبطه.
متغيرات Applitools هذه لا تُقرأ، ولا تُصدر تحذيرًا: APPLITOOLS_SERVER_URL, APPLITOOLS_BATCH_NAME, APPLITOOLS_DONT_CLOSE_BATCHES, APPLITOOLS_SHOW_LOGS.
اضبط CI لديك
لا تقرأ الحزمة git ولا متغيرات CI لديك: الأسطر أدناه تستخرج منها الفرع والفرع الأساسي والـ commit، وتضعها في متغيرات Applitools الثلاثة.
GitHub Actions
عند push، يكون github.head_ref فارغًا: فيكون الفرع حينئذٍ github.ref_name. وفي pull request، يكون github.sha هو commit الدمج الذي ينشئه GitHub، لا الـ commit المدفوع: لذا يتقدّم عليه commit الرأس.
env:
APPLITOOLS_BRANCH: ${{ github.head_ref || github.ref_name }}
APPLITOOLS_PARENT_BRANCH: ${{ github.base_ref || github.event.repository.default_branch }}
APPLITOOLS_BATCH_ID: ${{ github.event.pull_request.head.sha || github.sha }}GitLab CI
في pipeline لطلب دمج (merge request)، يكون CI_MERGE_REQUEST_TARGET_BRANCH_NAME هو الفرع الهدف؛ وفي pipeline لفرع، يكون فارغًا.
script:
- export APPLITOOLS_BRANCH="${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:-$CI_COMMIT_REF_NAME}"
- export APPLITOOLS_PARENT_BRANCH="${CI_MERGE_REQUEST_TARGET_BRANCH_NAME:-$CI_DEFAULT_BRANCH}"
- export APPLITOOLS_BATCH_ID="$CI_COMMIT_SHA"
- npx playwright testBitbucket Pipelines
لا يُضبط BITBUCKET_PR_DESTINATION_BRANCH إلا في pipeline لطلب سحب (pull request).
script:
- export APPLITOOLS_BRANCH="$BITBUCKET_BRANCH"
- export APPLITOOLS_PARENT_BRANCH="$BITBUCKET_PR_DESTINATION_BRANCH"
- export APPLITOOLS_BATCH_ID="$BITBUCKET_COMMIT"
- npx playwright testAzure Pipelines
لا تُضبط متغيرات System.PullRequest إلا في build لطلب سحب (pull request)، بالشكل refs/heads/… في Azure Repos. ولا يحتفظ Build.SourceBranchName إلا بالمقطع الأخير من اسم الفرع (feature/cart يعطي cart)، لذا يُقرأ الفرع من الـ ref الكامل.
- script: |
branch="${SYSTEM_PULLREQUEST_SOURCEBRANCH:-$BUILD_SOURCEBRANCH}"
base="${SYSTEM_PULLREQUEST_TARGETBRANCH:-}"
export APPLITOOLS_BRANCH="${branch#refs/heads/}"
export APPLITOOLS_PARENT_BRANCH="${base#refs/heads/}"
export APPLITOOLS_BATCH_ID="${SYSTEM_PULLREQUEST_SOURCECOMMITID:-$BUILD_SOURCEVERSION}"
npx playwright testلا يُستخدم فرع أساسي مطابق للفرع نفسه: على الفرع الافتراضي، لا تعطي هذه الأسطر أي فرع أساسي.
أغلق في مرحلة التفكيك (teardown)، لا في متن الاختبار أبدًا
مع الـ fixture، يُغلق eyes في مرحلة تفكيك الاختبار. وبدونها، استدعِ eyes.close() في afterEach، وrunner.getAllTestResults() في afterAll.
لا تُغلق أبدًا في متن الاختبار: انتظار الحكم يستهلك وقت الاختبار — 30 ثانية افتراضيًا في Playwright Test — والخطوة التي تفشل قبل close() تترك الاختبار مفتوحًا. أما مرحلة التفكيك فلها مهلتها الخاصة.
import { test } from "@playwright/test";
import { Eyes, Target, VisualGridRunner } from "@delta-qa/vision/eyes";
const runner = new VisualGridRunner();
let eyes: Eyes;
test.beforeEach(async ({ page }) => {
eyes = new Eyes(runner);
await eyes.open(page, "Shop", test.info().title);
});
test("checkout", async ({ page }) => {
await page.goto("https://shop.example/cart");
await eyes.check("Cart", Target.window().fully());
});
test.afterEach(async () => {
await eyes.close(); // throws DiffsFoundError when a difference awaits a judgment
});
test.afterAll(async () => {
await runner.getAllTestResults();
});كل إعداد من إعدادات Applitools، وما يصبح عليه
كل إعدادات Applitools Eyes مقبولة: تُصرَّف مجموعة الاختبارات وتعمل. وكل إعداد إما يطبقه Delta-QA، وإما يُقبل بلا أثر مع تحذير. وبعض الاستدعاءات غير موجودة.
مطبَّقة
| الإعداد | في Delta-QA |
|---|---|
appName | تطبيق الاختبار؛ ومع اسم الاختبار، يحدد هويته. في eyesConfig، تكون القيمة My App عند عدم ضبطه، كما في fixture الخاصة بـ Applitools. |
testName | اسم الاختبار، أي مفتاحه: الاسم المتغيّر يعني اختبارًا جديدًا. في eyesConfig، يمكن أيضًا أن يكون دالة للاختبار؛ وبدونه، يُستخدم مسار عناوين الاختبار بلا ملفه (describe > test)، كما في fixture الخاصة بـ Applitools. |
apiKeysetApiKey | المفتاح، بدلًا من DELTAQA_API_KEY أو APPLITOOLS_API_KEY — مفتاح Delta-QA. لا يظهر أبدًا في رسالة ولا في سجل ولا في رابط. |
branchName | فرع التشغيل؛ وبدونه، APPLITOOLS_BRANCH ثم APPLITOOLS_BRANCH_NAME. |
parentBranchNamebaselineBranchName | الفرع الأساسي، baselineBranchName قبل parentBranchName؛ وبدونهما، متغيراهما بالترتيب نفسه. |
batch | الـ id الخاص بالدفعة هو الإصدار المختبَر — أي الـ commit؛ وبدونه، APPLITOOLS_BATCH_ID؛ وبدونهما معًا، إصدار واحد لكل عملية (انظر الفروق أدناه). |
saveNewTests | هل تصبح صفحات الاختبار الجديد مرجعه؛ true عند عدم ضبطه. |
viewportSize | الحجم المعطى للصفحة عند فتح الاختبار. |
browsersInfoaddBrowser(width, height) | كل حجم بيئة، لـ Chrome أو بلا اسم متصفح. وتُقرأ لغتها ومنطقتها الزمنية وسِمتها وكثافة شاشتها من متصفح الاختبار. |
fullyfully(true) | الصفحة كاملة — وهو ما يتحقق منه Delta-QA في كل الأحوال. |
withNamename | اسم الـ check. |
Target.window | صفحة الاختبار. |
Target.regionCheckSettings.regioncheckRegioncheckRegionBycheckRegionByElementcheckElementcheckElementBy | الجزء الوحيد من الصفحة الذي يُقارَن: أول عنصر يشير إليه locator أو محدِّد (selector) أو مقبض عنصر (element handle)، كما في Applitools؛ وآخر منطقة تُعطى هي التي تُعتمد. وتُستبعد مناطق التجاهل التي تحتويها. |
ignoreRegionsignoreRegionignoreignores | كل عنصر تشير إليه منطقة — locator، أو محدِّد، أو { selector, type }، أو مقبض عنصر — يُستبعد من المقارنة: كل عناصر الـ locator، كما في Applitools. وكذلك الصيغة { region } والمفتاح ignoreRegions في صيغة الكائن. |
eyesConfig.failTestsOnDiff | متى يُفشل الحكمُ الذي ليس PASSED، داخل الـ fixture: مع 'afterEach' يفشل الاختبار عند تفكيكه؛ ومع 'afterAll' يفشل الـ worker بعد انتهاء اختباراته؛ ومع false لا يفشل شيء، مع انتظار الحكم رغم ذلك. وبدونه، 'afterAll' عندما يكون المتغير CI مضبوطًا و'afterEach' في غير ذلك، كما تقرر الشيفرة البرمجية لـ fixture الخاصة بـ Applitools. |
eyesConfig.afterAll | يُستدعى بعد انتهاء اختبارات الـ worker، مع نتيجة كل منها. |
الاستدعاءات
| الاستدعاء | في Delta-QA |
|---|---|
open(page, appName, testName, viewportSize?) | يُعرَّف الاختبار بتطبيقه واسمه: الاسم المتغيّر يعني اختبارًا جديدًا. ويُعطى حجم نافذة العرض للصفحة. |
check(name?, Target.window())checkWindow(tag?) | يفحص الصفحة كما هي، في كل بيئة. الـ check بلا اسم يُربط بمرجعه عبر عنوان صفحته؛ ويُقبل وجود اثنين من الـ check بالاسم نفسه. ويعيد MatchResult بلا حكم، كما يفعل check في Applitools: يأتي الحكم عند الإغلاق. |
close(throwErr = true) | ينتظر الحكم: DiffsFoundError عند فرق ينتظر الحكم، وNewTestError عند اختبار جديد ينتظر الحكم (saveNewTests(false))، وTestFailedError عند فرق حُكم عليه بـ «Bug» أو عند فشل. وتعطي الرسالة رابط الإصدار في Delta-QA. |
closeAsync()runner.getAllTestResults(throwErr = true) | closeAsync() يُغلق دون انتظار؛ وينتظر الـ runner كل حكم، ويُغلق الاختبار الذي بقي مفتوحًا، ويرمي خطأً عند اختبار لم ينجح — ويحتفظ له بخطأ closeAsync(). |
abort()abortIfNotClosed()abortAsync() | يُغلق دون انتظار الحكم، ولا يُفشل شيئًا: تُوسَم النتائج بأنها مُلغاة، بلا نتيجة؛ وnull عندما لا يكون أي اختبار مفتوحًا. ومع ذلك يقارن Delta-QA عمليات التشغيل، ويعرض الإصدار نتيجتها. |
مقبولة بلا أثر
الإعداد الذي لا يطبقه Delta-QA لا يُفشل الاختبار: يعمل الاختبار بدونه. وأول استخدام له في عملية ما يُصدر تحذير Node.js يسمّيه، برمز DELTAQA_IGNORED_SETTING؛ ولا تقول الاستخدامات اللاحقة شيئًا، ويُسكت node --disable-warning=DELTAQA_IGNORED_SETTING هذه التحذيرات. والقيمة الفارغة — setX(process.env.VARIABLE) خارج CI — تُعدّ إعدادًا لم يُعطَ، ولا تُصدر تحذيرًا. والأسماء أدناه هي التي يذكرها التحذير.
إعدادات المقارنة
مستويات المطابقة، والمناطق بحسب مستوى المطابقة، والمناطق العائمة، والإزاحات تضبط مقارنة Applitools. أما Delta-QA فيقارن الصفحة كما تفعل العين البشرية، بلا مستوى تسامح يُضبط: يُعرض كل فرق، ويحكم عليه شخص في Delta-QA.
matchLeveldefaultMatchSettingsenablePatternsignoreDisplacementsignoreCaretuseDomsendDomCheckSettings.matchLevelCheckSettings.layoutCheckSettings.exactCheckSettings.strictCheckSettings.contentCheckSettings.ignoreColorsCheckSettings.dynamicCheckSettings.enablePatternsCheckSettings.ignoreDisplacementsCheckSettings.ignoreCaretCheckSettings.ignoreMismatchCheckSettings.useDomCheckSettings.sendDomCheckSettings.layoutRegionCheckSettings.layoutRegionsCheckSettings.strictRegionCheckSettings.strictRegionsCheckSettings.contentRegionCheckSettings.contentRegionsCheckSettings.floatingCheckSettings.floatingsCheckSettings.floatingRegionCheckSettings.floatingRegionsCheckSettings.dynamicRegionCheckSettings.dynamicRegions
إعدادات لقطة الشاشة
الدمج (stitching) والتمرير والقص والانتظار ولقطات تصحيح الأخطاء تشكّل لقطة Applitools. أما Delta-QA فيتحقق من الصفحة كاملة كما تركها الاختبار عند استدعاء check: لانتظار محتوى أو تحميل قسم كسول (lazy)، افعل ذلك في الاختبار، قبل الـ check.
hideCarethideScrollbarsforceFullPageScreenshotstitchModestitchOverlapscrollRootElementcutrotationwaitBeforeScreenshotswaitBeforeCapturematchTimeoutsaveDebugScreenshotsdebugScreenshotsPathdebugScreenshotsPrefixfully(false)CheckSettings.fully(false)CheckSettings.scrollRootElementCheckSettings.stitchModeCheckSettings.timeoutCheckSettings.waitBeforeCaptureCheckSettings.lazyLoadCheckSettings.useSystemScreenshot
المتصفحات والأجهزة والبيئات
يُجري Delta-QA العرض (rendering) في Chromium: ما يُحتسب هو الحجم المعطى لـ addBrowser، لا المتصفح المسمّى، لذا فمتصفحان بالحجم نفسه بيئة واحدة. وجهاز من شبكة Applitools (DeviceName، IosDeviceName، المحاكاة، تعدد الأجهزة) لا يضيف أي بيئة. وتُقرأ اللغة والمنطقة الزمنية والسِّمة وكثافة الشاشة من متصفح الاختبار، ولا تغيّر تسميات البيئات شيئًا. ويتصرف ClassicRunner وVisualGridRunner بالطريقة نفسها.
addBrowser(chrome-one-version-back)addBrowser(chrome-two-versions-back)addBrowser(firefox)addBrowser(firefox-one-version-back)addBrowser(firefox-two-versions-back)addBrowser(safari)addBrowser(safari-one-version-back)addBrowser(safari-two-versions-back)addBrowser(edgechromium)addBrowser(edgechromium-one-version-back)addBrowser(edgechromium-two-versions-back)addBrowser(edgelegacy)addBrowser(ie)addBrowser(ie10)addBrowser(device)addDeviceEmulationaddMultiDeviceTargetmobileOptionscaptureStatusBarlayoutBreakpointsCheckSettings.layoutBreakpointsenvironmentNameenvNamebaselineEnvNamedeviceInfohostApphostAppInfohostOShostOSInfoscaleRatioCheckSettings.densityMetricseyesConfig.type
شبكة العرض في Applitools
لا مقابل لخيارات العرض والخطافات (hooks) والجلب والتخزين المؤقت والتوازي في شبكة Applitools: يُتحقق من الصفحة كما تركها الاختبار. والنص البرمجي (script) الذي كنت تشغّله في hook يُشغَّل في الاختبار، قبل الـ check.
visualGridOptionsCheckSettings.ufgOptionCheckSettings.ufgOptionsCheckSettings.visualGridOptionCheckSettings.visualGridOptionsCheckSettings.variationGroupIdCheckSettings.hookCheckSettings.beforeRenderScreenshotHookCheckSettings.webHookdisableBrowserFetchingCheckSettings.disableBrowserFetchingdisableNMLUrlCacheautProxybypassCSPskipRootHtmlResourceconcurrentSessionsRunnerOptions.testConcurrencyRunnerOptions.fetchConcurrencyRunnerOptions.removeDuplicateTests
الدفعات والمراجع والنتائج
يحمل الإصدار الـ commit: لا اسم له، ولا تسلسل، ولا خصائص، ولا إشعار، ولا شيء يُغلق. ولا يتغير المرجع إلا عندما يحكم شخص على فرق في Delta-QA؛ والاختبار بلا مرجع «جديد». وتُربط عمليات الـ check بأسمائها، وإلا بعنوان صفحتها. isDisabled: الاختبار الذي يُراد تشغيله بلا check لا يفتح Eyes.
BatchInfo.nameBatchInfo.sequenceNameBatchInfo.startedAtBatchInfo.notifyOnCompletionBatchInfo.propertiesBatchInfo.buildIddontCloseBatchesBatchClosepropertiesremoveSessionsaveDiffssaveFailedTestsignoreBaselinedisplayNamesessionTypeCheckSettings.pageIdisDisabled
Git
لا تقرأ الحزمة git: أعطِ الفرع الأساسي عبر parentBranchName أو baselineBranchName، والـ commit عبر id الدفعة أو APPLITOOLS_BATCH_ID.
compareWithParentBranchignoreGitMergeBasegitMergeBaseTimestamplatestCommitInfo
الخادم والاتصال والسجلات
تتعلق بخادم Applitools واتصاله وسجلاته. ويُقرأ خادم Delta-QA من DELTAQA_SERVER_URL؛ ولا تكتب الحزمة أي سجل لـ Applitools ولا تُصدر أي حدث لـ Applitools.
serverUrlproxyagentIdhttpVersionconnectionTimeoutEyes.onEyes.setLogHandlerEyes.addSessionEventHandlereyesConfig.logConfigRunnerOptions.maskLog
ميزات خارج Delta-QA
لا يتحقق Delta-QA من إمكانية الوصول، ولا يقرأ Figma، وليس فيه check باللغة الطبيعية؛ وصفحة Playwright ليس فيها web view.
accessibilityValidationCheckSettings.accessibilityRegionCheckSettings.accessibilityRegionsfigmaBaselinesfigmaOptionsnlpOptionsTarget.webviewCheckSettings.webview
مناطق بلا عنصر
يرصد Delta-QA العناصر المختلفة: فالمنطقة المحددة بالإحداثيات ({ x, y, width, height }، { left, top, width, height }) لا مقابل لها: تُقارَن الصفحة بدونها — كاملة، في حالة Target.region. النطاق هو العنصر، بلا حشوة (padding)؛ وregionId يسمّي منطقة في لوحة تحكم Applitools. ومع Target.frame أو Target.shadow، تُقارَن الصفحة كاملة، والمنطقة المعطاة بعدها بمحدِّد تُفشل الـ check بـ TypeError: فالنطاق عنصر من الصفحة نفسها.
CheckSettings.ignoreRegions(coordinates)Target.region(coordinates)CodedRegion.paddingCodedRegion.regionIdTarget.frameTarget.shadowCheckSettings.frameCheckSettings.shadow
المفتاح غير المعروف في صيغة الكائن لإعداد أو لـ check يُصدر تحذيرًا باسمه (CheckSettings.<key> في الـ check).
غير موجودة: ما لا يُصرَّف
هذه ليست إعدادات: إنها تعيد بيانات لا يملكها Delta-QA، أو تتحقق من صورة بدلًا من صفحة. ومجموعة الاختبارات التي تستخدمها لا تُصرَّف، بدلًا من أن تتلقى قيمة مختلَقة.
| غير موجود | السبب |
|---|---|
eyes.locateeyes.extractTexteyes.extractTextRegions | تعيد مناطق أو نصًا يقرؤه Applitools في لقطته. |
eyes.checkImageTarget.imageTarget.bufferTarget.base64Target.pathTarget.url | يتحقق Delta-QA من الصفحات، لا من الصور. |
eyes.getLoggereyes.logger | سجل Applitools. |
eyes.run | في fixture الخاصة بـ Applitools، الـ check باللغة الطبيعية. |
ما يختلف عن Applitools
خيارات مقصودة في Delta-QA، ينبغي معرفتها قبل التشغيل الأول.
| الحالة | Delta-QA |
|---|---|
| ربط الـ check بمرجعه | باسم الـ check عندما يكون كل اسم فريدًا داخل الاختبار؛ وإلا فبالترتيب، بالاسم، وإلا بعنوان الصفحة: إضافة check أو حذفه لا يزيح الباقي. |
| تغيير مقبول على فرع | لا دمج تلقائي للمراجع من فرع إلى آخر. وعندما يظهر الفرق نفسه على فرع آخر، يقترح Delta-QA «Already intended on … — apply?». |
| قبول فرق | «سلوك متوقع» يُطبَّق على الفروع التي تحددها. |
لا APPLITOOLS_BATCH_ID ولا id للدفعة | إصدار واحد لكل عملية: كل worker في Playwright Test عملية مستقلة، لذا تنتج عدة workers عدة إصدارات — مع الـ fixture أيضًا. اضبط APPLITOOLS_BATCH_ID على commit الـ CI لديك لتتشارك إصدارًا واحدًا. |
| منطقة تجاهل لا تطابق أي عنصر | تُستبعد، ويُرسل الـ check بدونها، كما يفعل Applitools — ويسمّيها تحذير Node.js برمز DELTAQA_IGNORED_REGION، مرة واحدة لكل منطقة ولكل عملية (ويُسكته node --disable-warning=DELTAQA_IGNORED_REGION). أما منطقة التحقق التي لا تطابق شيئًا فتُفشل الـ check بـ ZoneNotFoundError، كما في Applitools. |
runner.getAllTestResults() واختبار بقي مفتوحًا | يُغلق الاختبار ويُعطى حكمه؛ أما Applitools فيلغيه. |
الـ fixture: eyesConfig في أعلى playwright.config وفي مشروع | إعداد المشروع يحل محل الإعداد العلوي، كما يعطي Playwright Test خيارًا؛ ويضيف test.use مفاتيحه إلى إعداد المشروع. أما fixture الخاصة بـ Applitools فتدمج الاثنين مفتاحًا بمفتاح. |
الـ fixture: type: 'classic' مع browsersInfo | كل حجم بيئة، كما مع ClassicRunner خارج الـ fixture؛ أما fixture الخاصة بـ Applitools فتُسقط الأحجام. ويُصدر type تحذيرًا. |
الـ fixture: expect(page).toHaveScreenshot() | الخاص بـ Playwright Test: expect هو الخاص بـ @playwright/test. أما fixture الخاصة بـ Applitools فتحوّله إلى check من Eyes. |
| اختبار بقي بلا check مدة 30 دقيقة | يُغلقه Delta-QA؛ ثم يقرأ close() حكمه. |
البيانات التي ترسلها
ما ترسله الحزمة — الصفحات التي تتحقق منها اختباراتك والملفات التي تستخدمها — لا يُستخدم إلا لمقارنتها. والاختبار على بيانات إنتاج شخصية مسؤوليتك: شغّل مجموعة الاختبارات على بيانات اختبار.
Vision SDK: عمليات تحقق Delta-QA في اختبارات Playwright لديك
Applitools وApplitools Eyes وEyes علامات تجارية لشركة Applitools Ltd. وDelta-QA غير تابع لـ Applitools، ولا معتمد منها، ولا برعايتها.
شغّل مجموعة اختبارات Eyes على Delta-QA
لاستخدام Vision، تواصل معنا: تتوفر أولًا بالوصول المبكر. أخبرنا بالاختبارات التي تريد التحقق منها، ونفتح لك الوصول.