لقد حان الوقت لإعادة إصدار الإصدار الرئيسي الجديد من Codeception إلى الحياة! على مدار سنوات التطور والتحسين المستمر ، تعلمنا الكثير ، واليوم نقدم لك أفضل إصدار من Codeception. ما زلنا نعتقد أن سهولة الاختبار مهمة: يجب أن تكون اختبارات القراءة والكتابة وتصحيح الأخطاء سهلة.
من الصعب الحفاظ على مشروع يحاول تغطية جميع أنواع الأطر و CMS ، من Symfony إلى WordPress ، من Laravel إلى Magento. لكننا نرى أن الأشخاص من هذه المجتمعات يرسلون لنا بانتظام تصحيحات ، وفلسفتنا هي فصل الاختبارات عن الإطار ، ومشاركة حلول مماثلة من خلال الوحدات النمطية - بالطريقة الصحيحة. يستمر مجتمعنا المدهش في تحسين هذا المشروع.
حسنا ، ماذا عن كوديشن 3.0؟
تغييرات غير متوافقة
PHPUnit 8 الدعم
في الإصدار 3.0 ، لم نكسر أي شيء. تركها للإصدار الرئيسي التالي. وبالتالي ، نحن لا نرفع إصدارًا معتمدًا من PHP: لا يزال Codeception 3.0 متوافقًا مع PHP 5.6+ ، لأن الاختبار يجب أن يكون متاحًا للجميع. لا يزال يدعم جميع الأطر الرئيسية ومتوافق مع PHPUnit 6 و PHPUnit 7.
ومع ذلك ، فإن تخزين كل هذه الأجزاء أمر صعب ، ونحن نفترض أنه في الإصدار 3.0 يمكنك الحصول على تغيير مهم محتمل ، حيث أضفنا دعمًا لـ PHPUnit 8. وإلا ، يجب أن يكون التحديث سلسًا بالنسبة لك. إذا كنت تواجه مشكلات في التحديث ، قم بتغيير إصدار PHPUnit إلى 6 أو 7 في composer.json:
"phpunit/phpunit": "^7.0"
شكرًا
للمساهم الأساسي ،
Naktibalda ، لدعمه PHPUnit 8 دون المساومة على التوافق. لقد كانت مهمة ضخمة ، وإذا نظرت إلى
مشروع codecode / phpunit-wrapper الخاص بنا ، فسوف تفهم السبب.
وحدات عن بعد
قررنا التخلي عن بعض الوحدات القديمة ، والتي نأمل ألا يستخدمها أحد. هذا هو:
- AngularJS - عملت فقط من أجل Angular 1
- ZF1 - تم إهمال الإطار
- Yii1 - تم إهمال الإطار
- Silex - تم إهمال الإطار
- Facebook - الوحدة غير مدعومة
- XMLRPC - الوحدة غير مدعومة
إذا كنت في حاجة إليها ، ما عليك سوى نسخ الكود الخاص بهم من الفرع 2.5 وإنشاء مساعد مخصص.
الإعدادات الافتراضية المعدلة
إذا كنت تستخدم اختبار multisession
وأوامر $ I-> haveFriend ، فسترى أن اختباراتك فشلت. لم يعد يتم تضمين أساليب
الأصدقاء في فئة
Codeception \ Actor ، لذلك يجب إضافتها يدويًا. في
AcceptanceTester (أو فصل آخر يستخدم اختبار multisession) تتضمن
سمة Codeception \ Lib \ Actor \ Shared :
<?php class AcceptanceTester extends \Codeception\Actor { use _generated\AcceptanceTesterActions; use \Codeception\Lib\Actor\Shared\Friend; }
قمنا أيضًا بإيقاف تشغيل البيانات الشرطية للتركيبات الجديدة (نظرًا لأن الأشخاص يسيئون استخدامها في كثير من الأحيان) ، لذلك إذا كنت تريد استخدام أساليب
canSee ، فستحتاج إلى تمكينها.
ميزات جديدة
شل التفاعلية المحسن
تم نقل هذه الميزة من مشروع
CodeceptJS الودي. تقوم بإضافة واجهة
REPL جديدة ، لذا يمكنك الآن إيقاف الاختبار وتشغيل العديد من الأوامر في وحدة التحكم.
تعمل هذه الميزة على تغيير الطريقة التي تكتب بها اختباراتك الوظيفية وقبولك تمامًا. بدلاً من المحاولة العمياء لأوامر مختلفة وإعادة تشغيل الاختبارات باستمرار ، يمكنك كتابة:
<?php $I->amOnPage('/'); $I->pause();
وابدأ في كتابة أوامر واحدة تلو الأخرى ، خطوة بخطوة لكتابة اختبار. قم بنسخ الفرق الناجحة في اختباراتك ، وفي النهاية تحصل على اختبار يعمل بشكل كامل. إذا كنت تستخدم
WebDriver ، فيمكنك كتابة اختبار قبول كامل باستخدام جلسة مستعرض واحدة.
على عكس التنفيذ السابق للقذيفة التفاعلية المستندة إلى
hoa / console ، يمكنك استخدام مفاتيح اليسار واليمين لتحرير المدخلات:

جرب و أعد المحاولة
تم تقديم هذه الطرق لجعل اختبار المتصفح أقل إيلامًا. في عالم مليء بجافا سكريبت وتطبيقات ذات صفحة واحدة ، لم يعد بإمكانك الاعتماد على الأحداث الفردية ، وأحيانًا تحتاج إلى تكرار الإجراء عدة مرات لتنفيذه.
يمكنك الآن القيام بذلك باستخدام طرق إعادة المحاولة * التي يمكن أن تساعد في تثبيت الخطوات في اختباراتك:
<?php
تم نقل هذه الميزة أيضًا من CodeceptJS ، ولكن تم تنفيذها بشكل مختلف قليلاً.
ولكن ماذا لو كان موقعك يجب أن يتصرف بشكل مختلف في بيئات مختلفة؟ على سبيل المثال ، إظهار إشعار بقبول ملفات تعريف الارتباط حسب المنطقة ، وقبول ملفات تعريف الارتباط إذا تم عرض هذا الإشعار؟ يمكنك القيام بذلك باستخدام إجراءات tryTo *:
<?php if ($I->tryToSeeElement('.alert.cookie')) { $I->click('Accept', '.cookie'); }
تم تطبيق أساليب try * و retry * كديكور خطوة بخطوة ، مما يسمح لك بإنشاء إجراءات إضافية من خلال التفاف أساليب الوحدة النمطية. كما تم إعادة صياغة العبارات الشرطية (أساليب canSee *) كديكور خطوة بخطوة. لذلك تحتاج إلى تمكينها صراحة في الإعدادات.
التحف الناتج
تحتوي الاختبارات الفاشلة الآن على قائمة بجميع التحف المتوفرة. بالنسبة لاختبار REST API ، سيحتوي كل اختبار على نص الاستجابة الأخيرة لتبسيط تصحيح الأخطاء على خوادم CI.

التثبيت والترقية
للترقية إلى الإصدار 3 ، ما عليك سوى تغيير الإصدار في "composer.json إلى" ^ 3.0 ":
"codeception/codeception": "^3.0"
استنتاج
شكرا لكل من كان معنا طوال هذه السنوات والذي ساعد على تحسين Codeception كل يوم. مرة أخرى ، بفضل Naktibalda لرعاية دعم الإصدارات الثانوية وبناء جسر التوافق.
بفضل أوتو Kekäläinen من Seravo للتبرع السخي.
وبضع كلمات من ميخائيل Bodnarchuk ، الذي بدأ Codeception قبل 8 سنوات:
كشخص مهتم بالجودة والاختبار ، كنت مهتمًا بالإجابة على السؤال: ما الذي يجب التحقق منه أولاً. وأفضل إجابة وجدت هي الحصول على هذه المعلومات من مراجعات المستخدم. في بعض الأحيان لا يمكن العثور على خطأ إلا من قبل المستخدم العادي دون التسبب في تتبع مكدس. وما أود رؤيته هو أنه يمكن لمستخدمي موقع الويب أو تطبيق الويب إرسال رسائل الخطأ هذه فورًا. لهذا السبب قمت بإنشاء Bugira Bugtracker ، منتج SaaS الجديد الخاص بي ، لتلقي تقارير الأخطاء من المستخدمين. إذا كنت تحب مشاريعي مثل Codeception أو CodeceptJS ، فجرّب Bugira. هذا سيساعدك على إقامة اتصالات أفضل مع المستخدمين وإنشاء منتجات أفضل!
سجل التغيير الكامل الإصدار 3.0تحديث الوثائق