KO
|
EN
gitlite — search
Search
#javascript
#python
#hacktoberfest
#react
#ai
#typescript
#llm
#go
#golang
#android
#machine-learning
#rust
#deep-learning
#linux
drupal-codeception
★ 17
Open GitHub ↗
Codeception toolset for Drupal.
Download README (.md)
Explore Similar Repositories
GraphNet
:
GraphNet: Learning Image Pseudo Annotations for Weakly-Supervised Semantic Segmentation, in ACM MM 2018 (oral)
vue-component-webpack
:
基于webpack4.0的用于开发vue组件的全自动脚手架配置
MGObfuscator
:
An easy encryptor / decryptor for iOS
ansible_influx_downsampling
:
Ansible role to setup downsampling with continuous queries on influxDB, optionally with backfilling and compaction of existing raw data.
purescript-simple-ajax
:
An opionated library to work with AJAX and JSON
// repository documentation
Was this content helpful?
★ 0
(0 ratings)
Select Rating:
★
★
★
★
★
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
drupal-codeception
?
Download (.md)
# Drupal Codeception ## Overview Sets of codeception modules and utilities to test drupal cms. Includes: - Drupal Bootstrap - Drupal Entity - Drupal User - Drupal Watchdog - Drupal Drush - Drupal Acceptance ## Installation Require package: ```composer require guncha25/drupal-codeception --dev``` If codeception was not previously set up: ```./vendor/bin/codecept bootstrap``` If you require only one suite for now (e.g. acceptance): ```./vendor/bin/codecept init acceptance``` ## Drupal Bootstrap Provides full bootstrapping in to Drupal before test. Allows using drupal API in test cases. ### Configuration - server: Server and execution environment information. - root: Drupal root. Uses DrupalFinder to detect the Drupal root. Falls back to codeception root + `/web`. (optional) ``` modules: - DrupalBootstrap: server: SERVER_PORT: null REQUEST_URI: '/' REMOTE_ADDR: '127.0.0.1' HTTP_HOST: 'site.multi' ``` ## Drupal Drush Provides drush (`runDrush`) command. ### Configuration - working_directory: Working directory where drush should be executed. Defaults to codeception root. - timeout: Timeout in seconds for drush command. Set to 0 for no timeout. Default to 60 seconds. - drush: Drush executable. Defaults to `drush`. ``` modules: - DrupalDrush: working_directory: './web' timeout: 120 drush: './vendor/bin/drush' options: uri: http://mydomain.com root: /app/web ``` ### Usage Run drush status and store output. `$output = $i->runDrush('status');` Run drush config import and store output from STDERR. `$output = $i->runDrush('cim -y', [], TRUE)->getErrorOutput();` Run drush cache rebuild and store the exit code. `$exit_code = $i->runDrush('cr', [], TRUE)->getExitCode();` Get one-time login url. `$uri = $i->getLoginUri('userName');` ## Drupal Entity Provides better interaction with drupal entities and test entity cleanup service. ### Configuration - cleanup_test: Indicator if test entities should be deleted after each test. - cleanup_failed: Indicator if test entities should be deleted after test fails. - cleanup_suite: Indicator if test entities should be deleted after suite. - route_entities: Entity list that can be retrieved by url. ``` modules: - DrupalEntity: cleanup_test: true cleanup_failed: false cleanup_suite: true route_entities: - node - taxonomy_term ``` ### Usage Create entities. `$node = $i->createEntity(['title => 'My node', 'type' => 'page']);` `$term = $i->createEntity(['name => 'My term', 'vid' => 'tag'], 'taxonomy_term');` Delete all stored test entities. `$i->doEntityCleanup();` Register test entity. `$i->registerTestEntity('node', '99');` Register test entity by url. `$i->registerTestEntityByUrl($i->grabFromCurrentUrl());` Get entity by url. `$entity = $i->getEntityFromUrl($i->grabFromCurrentUrl());` ## Drupal User Provides better interaction with drupal user and test user setup and cleanup service. ### Configuration - default_role: Default user role if no specified. Defaults to 'authenticated' - driver: Driver used for interacting with site. Defaults to WebDriver. - drush: Drush executable. Defaults to `drush`. - cleanup_entities: Entities to delete when test user gets deleted. - cleanup_test: Indicator if test entities should be deleted after each test. - cleanup_failed: Indicator if test entities should be deleted after test fails. - cleanup_suite: Indicator if test entities should be deleted after suite. ``` modules: - DrupalUser: default_role: 'authenticated' driver: 'PhpBrowser' drush: './vendor/bin/drush' cleanup_entities: - media - file cleanup_test: true cleanup_failed: false cleanup_suite: true ``` ### Usage Create test user with specified roles. `$user = $i->createUserWithRoles(['editor', 'authenticated'], 'password');` Log in user by username. `$i->loginAs('userName');` Create new user with certain role and login. `$i->logInWithRole('administrator');` ## Drupal Watchdog Provides log checking while testing. ### Configuration - enabled: Wheather automatic check is enabled after suite. Defaults to `TRUE` - level: Global log level that would produce fail. Defaults to 'ERROR'. - channels: Individual log channel settings. ``` modules: - DrupalWatchdog: enabled: true level: 'ERROR' channels: my_module: 'NOTICE' php: 'WARNING' ``` ### Usage Clean logs. `$i->prepareLogWatch();` Check logs. `$i->checkLogs();` ## Drupal Acceptance Provides helper methods to interact with drupal via webdriver. ``` modules: - DrupalAcceptance: ``` ### Usage ``` // Fill title. $i->fillTextField(FormField::title(), 'Mans nosukums'); // Select option from select list by key or value. // For custom fields, target (last parameter) usually needs to be set to an // empty string. $i->selectOptionFromList(FormField::langcode(), 'en'); $i->selectOptionFromList(FormField::langcode(), 'English'); $i->selectOptionFromList(FormField::field_my_list(), 'Apple', ''); // Select the nth option from a select list. $i->selectOptionFromList(FormField::langcode()); $i->selectNthOptionFromList(MTOFormField::field_my_list(), 2, ''); // Fill first paragraph of type text. $page_elements = ParagraphFormField::field_page_elements(); $i->fillWysiwygEditor(FormField::field_text_formatted($page_elements), 'Lorem'); // Remove text paragraph. $i->removeParagraph($page_elements); // Add second paragraph of type graybox. $i->addParagraph('graybox', $page_elements->next()); // Fill title of graybox. $i->fillTextField(FormField::field_title($page_elements), 'Mans nosukums'); // Fill link field. $i->fillLinkField(FormField::field_link($page_elements), 'http://example.com', 'Example'); $i->fillLinkField(FormField::field_link($page_elements), 'http://example.com'); // Add taxonomy term reference for tags field. $field_tags = FormField::field_tags(); $i->fillReferenceField(FormField::field_tags(), Fixtures::get('term1')); $i->addReferenceFieldItem($field_tags->next()); $i->fillReferenceField($field_tags, Fixtures::get('term2')); $i->clickOn(FormField::submit()); ``` ## Drupal Fields Utility Provides xpath builder object for drupal specific form field xpath retrieval. Includes: - FormField: Fields that can be set to cardinality unlimited - MTOFormField: Single value fields. - ParagraphFormField: Paragraph form fields. ### Usage Create paragraph field with machine name field_page_elements. `$page_elements = ParagraphFormField::field_page_elements();` Get next paragraph. `$page_elements->next();` Fill title field value from field page elements. `$i->fillField(FormField::title($page_elements)->value);` Add new paragraph of type liftup_element. ``` $i->click($page_elements->addMore('liftup_element')); $i->waitForElementVisible($page_elements->getCurrent('Subform')); ```