diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 27b72f9ed..0bc45d58c 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -19,7 +19,7 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: token: ${{ secrets.GH_PAT }} @@ -30,8 +30,10 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 + env: + COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - php-version: 8.0 + php-version: 8.1 - name: Install dependencies run: composer install --prefer-dist --no-progress diff --git a/.gitignore b/.gitignore index 82d6b51a3..e954f2dc2 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ _site/ /composer.lock Gemfile.lock /docs/modules/AbstractAsserts.md +/docs/modules/Phalcon.md +/docs/modules/Phalcon4.md /package/composer.lock /package/vendor /vendor diff --git a/Gemfile b/Gemfile index 205a5eaf6..52816f1c6 100644 --- a/Gemfile +++ b/Gemfile @@ -1,8 +1,11 @@ source 'https://rubygems.org' -gem 'jekyll', '~> 4.2.2' +gem 'jekyll', '~> 4.3.3' gem 'kramdown' gem 'rouge' +gem 'webrick' +gem 'wdm', '~> 0.1.1', :install_if => Gem.win_platform? + group :jekyll_plugins do gem 'jekyll-algolia', '~> 1.7.1' diff --git a/README.md b/README.md index 918c34b10..925d83538 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Codeception Site +# Codeception.com Website https://codeception.com diff --git a/RoboFile.php b/RoboFile.php index e21767f9e..cb6a82e2f 100644 --- a/RoboFile.php +++ b/RoboFile.php @@ -11,7 +11,8 @@ class RoboFile extends \Robo\Tasks const REPO_BLOB_URL = 'https://github.com/Codeception/Codeception/blob'; const BRANCH_4x = '4.2'; - const BRANCH_5x = '5.0'; + const BRANCH_5x = '5.1'; + const BRANCH_MAIN = 'main'; function post() { @@ -42,76 +43,7 @@ function publish() ->push() ->run(); } - - - /** - * builds docs for specific branch - */ - function docsBranch($branch) - { - $this->yell("Creating docs for $branch"); - $dir = "docs-$branch"; - - $this->taskGitStack() - ->cloneRepo('git@github.com:Codeception/Codeception.git', 'source') - ->run(); - - $this->taskGitStack() - ->dir('source') - ->checkout($branch) - ->run(); - - $this->taskCleanDir($dir)->run(); - - $this->taskWriteToFile("_includes/doc_$branch.html") - ->text('
') - ->text('You are viewing documentation for Codeception ' . $branch . '. ') - ->text('Switch to latest stable »') - ->text('
') - ->run(); - - - $indexFile = $this->taskWriteToFile($dir . '/index.md') - ->line('---') - ->line('layout: doc') - ->line("title: Codeception $branch Documentation") - ->line('---') - ->text("\n\n{% include doc_$branch.html %}\n\n\n") - ->line("# Codeception $branch Guides\n\n"); - - $guides = Finder::create() - ->ignoreVCS(true) - ->depth('== 0') - ->name('*.md') - ->sortByName() - ->in('source/docs'); - - - foreach ($guides as $file) { - $contents = file_get_contents($file->getRealPath()); - $name = substr($file->getBasename(), 0, -3); - $title = preg_replace("(\d+-)", '', $name); - if (preg_match('/^# (.*)$/m', $contents, $matches)) { - $title = $matches[1]; - } - $indexFile->line("* [$title](/$dir/$name)"); - - $this->taskWriteToFile($dir . '/' . $file->getBasename()) - ->line('---') - ->line('layout: doc') - ->line('title: Codeception Documentation') - ->line('---') - ->line('') - ->line('') - ->text("{% include doc_$branch.html %}") - ->line('') - ->line('') - ->text($contents) - ->run(); - } - $indexFile->run(); - // $this->taskDeleteDir('source')->run(); - } + /** * @desc generates modules reference from source files @@ -122,7 +54,6 @@ public function buildDocs() $this->taskComposerUpdate()->preferSource()->run(); $this->buildDocsModules(); $this->buildDocsUtils(); - $this->buildDocsGuides(); $this->buildDocsCommands(); $this->buildDocsStub(); $this->buildDocsApi(); @@ -130,46 +61,6 @@ public function buildDocs() $this->changelog(); } - public function buildDocsGuides() { - $guides = Finder::create() - ->ignoreVCS(true) - ->depth('== 0') - ->name('*.md') - ->sortByName() - ->in('guides'); - - $guidesLinks = []; - - foreach ($guides as $file) { - $name = substr($file->getBasename(), 0, -3); - $titleName = preg_replace("(\d+-)", '', $name); - - $link = "/docs/$titleName"; - $editLink = 'https://github.com/Codeception/codeception.github.com/edit/master/guides/' . $file->getBasename(); - $title = preg_replace('/([A-Z]+)([A-Z][a-z])/', '\\1 \\2', $titleName); - $title = preg_replace('/([a-z\d])([A-Z])/', '\\1 \\2', $title); - - $contents = file_get_contents($file->getPathname()); - - foreach ([$file->getBasename(), $titleName . '.md'] as $filename) { - $this->taskWriteToFile('docs/' . $filename) - ->line('---') - ->line('layout: doc') - ->line("title: $title - Codeception Docs") - ->line('---') - ->line('') - ->line('') - ->text($contents) - ->line('') - ->line('
Improve this guide
') - ->run(); - } - - $guidesLinks[] = "
  • $title
  • "; - } - file_put_contents('_includes/guides.html', implode("\n", $guidesLinks)); - } - public function buildDocsModules() { $this->taskCleanDir('docs/modules')->run(); @@ -192,6 +83,12 @@ public function buildDocsModules() $this->taskFilesystemStack()->symlink('Mezzio.md', 'docs/modules/ZendExpressive.md')->run(); $this->taskFilesystemStack()->symlink('Laravel.md', 'docs/modules/Laravel5.md')->run(); $this->taskFilesystemStack()->symlink('Laminas.md', 'docs/modules/ZF2.md')->run(); + + // Don't update old Phalcon modules + $this->taskGitStack() + ->stopOnFail() + ->checkout('-- docs/modules/Phalcon.md docs/modules/Phalcon4.md') + ->run(); } private function postProcessModuleDocFile($documentationFile, $name, $source) @@ -367,7 +264,7 @@ public function buildDocsExtensions() ->prepend("# Official Extensions\n") ->processClassSignature(function (ReflectionClass $r, $text) { $name = $r->getShortName(); - return "## $name\n\n[See Source](" . self::REPO_BLOB_URL . "/" . self::BRANCH_5x . "/ext/$name.php)"; + return "## $name\n\n[See Source](" . self::REPO_BLOB_URL . "/" . self::BRANCH_MAIN . "/ext/$name.php)"; }) ->filterMethods(function (ReflectionMethod $r) { return false; @@ -523,7 +420,7 @@ public function buildPhar80() $this->stopOnFail(); $this->taskFilesystemStack()->mkdir('build/80')->run(); - $this->setCodeceptionVersionTo('^5.0'); + $this->setCodeceptionVersionTo('^' . self::BRANCH_5x); $this->setPlatformVersionTo('8.0.2'); $buildFile = 'build/80/codecept.phar'; $this->buildPhar($buildFile); @@ -637,7 +534,6 @@ private function setCodeceptionVersionTo($version) { $this->taskComposerRequire() ->dependency('codeception/codeception', $version) - ->ignorePlatformRequirements() ->workingDir('package') ->run(); } @@ -667,6 +563,7 @@ private function packPhar($pharFileName) $finder = Finder::create()->files() ->ignoreVCS(true) ->name('*.php') + ->name('*.php8') ->name('*.css') ->name('*.png') ->name('*.js') diff --git a/_config.yml b/_config.yml index 4be72f287..1339b5f28 100644 --- a/_config.yml +++ b/_config.yml @@ -29,4 +29,4 @@ banner: # disable content to show last blogpost # content: 'πŸŽ‰ Codeception truns 10! Join online celebration on November 30!' # content: 'Codeception is on OpenCollective! Support us πŸ’–' - content: 'πŸŽ‰ Codeception 5 is out! | πŸ‡ΊπŸ‡¦ Help Ukraine!' + content: 'πŸ‡ΊπŸ‡¦ Help Ukraine!' diff --git a/_data/extensions.yml b/_data/extensions.yml index fc0428a10..f5c77f180 100644 --- a/_data/extensions.yml +++ b/_data/extensions.yml @@ -1,3 +1,8 @@ +- name: Testomat.io Reporter + link: https://github.com/testomatio/php-reporter + description: Run reports and analytics via [Testomat.io](https://testomat.io) + image: https://testomat.io/wp-content/uploads/2022/03/Real_time_report_test_result-936x573.jpg + - name: Allure Codeception Adapter link: https://github.com/allure-framework/allure-codeception description: This is a Codeception adapter for [Allure Framework](http://allure.qatools.ru) diff --git a/_data/modules.yml b/_data/modules.yml index 6b8b770e3..06df2206a 100644 --- a/_data/modules.yml +++ b/_data/modules.yml @@ -87,10 +87,14 @@ description: Codeception module to test email using MailCare.io (Free, Open Source or paid services). color: "#e65722" +- name: Mailpit + image: ../images/mailpit.svg + link: https://github.com/koehnlein/codeception-email-mailpit + description: Mailpit is a standalone local SMTP server to test email deliveries. The Codeception module provides assertions such as `$I->haveUnreadEmails();` or `$I->seeInOpenedEmailHtmlBody()`. + - name: MailCatcher link: https://github.com/captbaritone/codeception-mailcatcher-module description: MailCatcher is a standalone software which can be configured to catch *any* email sent by your development server, and display it on a webpage. The MailCatcher Module allows you to test the contents of those emails in an acceptance test. - color: "#FFF5C4" - name: MailSMTP link: https://github.com/AhmedSamy/codeception-smtp-mail @@ -161,3 +165,7 @@ - name: Yandex link: https://github.com/portrino/codeception-yandex-module description: Validation of structured data via yandex API. + +- name: Grpc + link: https://github.com/MercerMorning/codeception-grpc-module + description: Validation of grpc server. diff --git a/_includes/algolia.html b/_includes/algolia.html index 58043c85f..415a7dad3 100644 --- a/_includes/algolia.html +++ b/_includes/algolia.html @@ -1,24 +1,25 @@ diff --git a/_includes/announcement.html b/_includes/announcement.html deleted file mode 100644 index 3a23886a3..000000000 --- a/_includes/announcement.html +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/_includes/cloudways.html b/_includes/cloudways.html index 2ee33cbda..b283aee3a 100644 --- a/_includes/cloudways.html +++ b/_includes/cloudways.html @@ -1,3 +1,4 @@ - - cloudways + + cloudways diff --git a/_includes/comment.html b/_includes/comment.html index 7fe39734b..0b52c8748 100644 --- a/_includes/comment.html +++ b/_includes/comment.html @@ -9,4 +9,4 @@ (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })(); - + diff --git a/_includes/extensions.md b/_includes/extensions.md index 107bd5f04..9d9df2b06 100644 --- a/_includes/extensions.md +++ b/_includes/extensions.md @@ -2,10 +2,10 @@ ## DotReporter -[See Source](https://github.com/Codeception/Codeception/blob/5.0/ext/DotReporter.php) +[See Source](https://github.com/Codeception/Codeception/blob/main/ext/DotReporter.php) DotReporter provides less verbose output for test execution. -Like PHPUnit printer it prints dots "." for successful testes and "F" for failures. +Like PHPUnit printer it prints dots "." for successful tests and "F" for failures. ![](https://cloud.githubusercontent.com/assets/220264/26132800/4d23f336-3aab-11e7-81ba-2896a4c623d2.png) @@ -38,7 +38,7 @@ Use this extension as an example for building custom reporters. ## Logger -[See Source](https://github.com/Codeception/Codeception/blob/5.0/ext/Logger.php) +[See Source](https://github.com/Codeception/Codeception/blob/main/ext/Logger.php) Log suites/tests/steps using Monolog library. Monolog should be installed additionally by Composer. @@ -66,16 +66,16 @@ extensions: ## Recorder -[See Source](https://github.com/Codeception/Codeception/blob/5.0/ext/Recorder.php) +[See Source](https://github.com/Codeception/Codeception/blob/main/ext/Recorder.php) -Saves a screenshot of each step in acceptance tests and shows them as a slideshow on one HTML page (here's an [example](https://codeception.com/images/recorder.gif)) -Activated only for suites with WebDriver module enabled. +Saves a screenshot of each step in acceptance tests and shows them as a slideshow on one HTML page (here's an [example](https://codeception.com/images/recorder.gif)). +Works only for suites with WebDriver module enabled. The screenshots are saved to `tests/_output/record_*` directories, open `index.html` to see them as a slideshow. #### Installation -Add this to the list of enabled extensions in `codeception.yml` or `acceptance.suite.yml`: +Add this to the list of enabled extensions in `codeception.yml` or `Acceptance.suite.yml`: ``` yaml extensions: @@ -106,7 +106,7 @@ extensions: ``` #### Skipping recording of steps with annotations -It is also possible to skip recording of steps for specified tests by using the @skipRecording annotation. +It is also possible to skip recording of steps for specified tests by using the `@skipRecording` annotation. ```php /** @@ -122,10 +122,9 @@ public function testLogin(AcceptanceTester $I) - ## RunBefore -[See Source](https://github.com/Codeception/Codeception/blob/5.0/ext/RunBefore.php) +[See Source](https://github.com/Codeception/Codeception/blob/main/ext/RunBefore.php) Extension for execution of some processes before running tests. @@ -156,9 +155,9 @@ HINT: you can use different configurations per environment. ## RunFailed -[See Source](https://github.com/Codeception/Codeception/blob/5.0/ext/RunFailed.php) +[See Source](https://github.com/Codeception/Codeception/blob/main/ext/RunFailed.php) -Saves failed tests into tests/_output/failed in order to rerun failed tests. +Saves failed tests into `tests/_output/failed` in order to rerun failed tests. To rerun failed tests just run the `failed` group: @@ -170,9 +169,9 @@ To change failed group name add: ``` --override "extensions: config: Codeception\Extension\RunFailed: fail-group: another_group1" ``` -Remember: if you run tests and they generated custom-named fail group, to run this group, you should add override too +Remember: If you run tests and they generated custom-named fail group, to run this group, you should add override too -Starting from Codeception 2.1 **this extension is enabled by default**. +**This extension is enabled by default.** ``` yaml extensions: @@ -185,15 +184,16 @@ On each execution failed tests are logged and saved into `tests/_output/failed` ## RunProcess -[See Source](https://github.com/Codeception/Codeception/blob/5.0/ext/RunProcess.php) +[See Source](https://github.com/Codeception/Codeception/blob/main/ext/RunProcess.php) Extension to start and stop processes per suite. -Can be used to start/stop selenium server, chromedriver, mailcatcher, etc. +Can be used to start/stop selenium server, chromedriver, [MailCatcher](https://mailcatcher.me/), etc. +Each command is executed only once, at the beginning of the test suite. To execute a command before each test, see [Before/After Attributes](https://codeception.com/docs/AdvancedUsage#BeforeAfter-Attributes). -Can be configured in suite config: +Can be enabled in suite config: ```yaml -# acceptance.suite.yml +# Acceptance.suite.yml extensions: enabled: - Codeception\Extension\RunProcess: @@ -203,8 +203,7 @@ extensions: Multiple parameters can be passed as array: ```yaml -# acceptance.suite.yml - +# Acceptance.suite.yml extensions: enabled: - Codeception\Extension\RunProcess: @@ -214,8 +213,7 @@ extensions: In the end of a suite all launched processes will be stopped. -To wait for the process to be launched use `sleep` option. -In this case you need configuration to be specified as object: +To wait for the process to be launched use `sleep` option. In this case you need configuration to be specified as object: ```yaml extensions: @@ -226,13 +224,13 @@ extensions: sleep: 5 # wait 5 seconds for processes to boot ``` -HINT: you can use different configurations per environment. +HINT: You can use different configurations per environment. ## SimpleReporter -[See Source](https://github.com/Codeception/Codeception/blob/5.0/ext/SimpleReporter.php) +[See Source](https://github.com/Codeception/Codeception/blob/main/ext/SimpleReporter.php) This extension demonstrates how you can implement console output of your own. Recommended to be used for development purposes only. diff --git a/_includes/for.html b/_includes/for.html deleted file mode 100644 index c2d66ef98..000000000 --- a/_includes/for.html +++ /dev/null @@ -1,55 +0,0 @@ -
    -
    - -
    - Symfony -

    Symfony

    -
    -
    -
    -
    - -
    - laravel -

    Laravel

    -
    -
    -
    -
    - -
    - wordPress -

    WordPress

    -
    -
    -
    -
    - -
    -
    - -
    - joomla -

    joomla

    -
    -
    -
    -
    - -
    - yii -

    Yii Framework

    -
    -
    -
    - -
    - -
    - Phalcon -

    Phalcon

    -
    -
    -
    -
    - diff --git a/_includes/frameworks.html b/_includes/frameworks.html new file mode 100644 index 000000000..e8e305b13 --- /dev/null +++ b/_includes/frameworks.html @@ -0,0 +1,35 @@ +
    +
    + +
    + Symfony +

    Symfony

    +
    +
    +
    +
    + +
    + laravel +

    Laravel

    +
    +
    +
    +
    + +
    + yii +

    Yii Framework

    +
    +
    +
    +
    + +
    + Phalcon +

    Phalcon

    +
    +
    +
    +
    + diff --git a/_includes/hero.html b/_includes/hero.html index efe4fd084..b63456449 100644 --- a/_includes/hero.html +++ b/_includes/hero.html @@ -1,26 +1,19 @@ - -
    -
    -
    - code example - -

    PHP Testing for
    everyone_

    - -

    - Codeception collects and shares best practices and solutions for testing PHP web applications. With a flexible - set of included modules tests are easy to write, easy to use and easy to maintain.
    -

    - - -
    -
    +
    +
    + code example +

    PHP Testing for
    everyone_

    +

    + Codeception collects and shares best practices and solutions for testing PHP web applications. With a + flexible + set of included modules tests are easy to write, easy to use and easy to maintain.
    +

    + +
    -
    - diff --git a/_includes/joomla_hero.html b/_includes/joomla_hero.html index 4e2b2405e..efea67de8 100644 --- a/_includes/joomla_hero.html +++ b/_includes/joomla_hero.html @@ -1,15 +1,14 @@
    -
    -
    -
    -
    -

    - Codeception for - - Joomla

    - +
    +
    +
    +
    +

    + Codeception for + Joomla +

    +
    +
    -
    -
    -
    \ No newline at end of file +
    diff --git a/_includes/js.html b/_includes/js.html index ab2622bd2..8bee78f05 100644 --- a/_includes/js.html +++ b/_includes/js.html @@ -1,5 +1,7 @@ - + \ No newline at end of file diff --git a/_includes/laravel_hero.html b/_includes/laravel_hero.html index 300478491..fad0bacef 100644 --- a/_includes/laravel_hero.html +++ b/_includes/laravel_hero.html @@ -1,15 +1,14 @@
    -
    -
    -
    -
    -

    - Codeception for - - Laravel Framework Laravel -

    +
    +
    +
    +
    +

    + Codeception for + Laravel Framework Laravel +

    +
    +
    -
    -
    \ No newline at end of file diff --git a/_includes/modules.html b/_includes/modules.html index 064f069d6..1a27a238f 100644 --- a/_includes/modules.html +++ b/_includes/modules.html @@ -4,7 +4,7 @@
  • Cli
  • DataFactory
  • Db
  • -
  • Doctrine2
  • +
  • Doctrine
  • FTP
  • Filesystem
  • Laminas
  • @@ -23,4 +23,4 @@
  • SOAP
  • Symfony
  • WebDriver
  • -
  • Yii2
  • \ No newline at end of file +
  • Yii2
  • diff --git a/_includes/phalcon_hero.html b/_includes/phalcon_hero.html index c208c7aaa..5ae0f4a36 100644 --- a/_includes/phalcon_hero.html +++ b/_includes/phalcon_hero.html @@ -1,15 +1,13 @@
    -
    -
    -
    -
    -

    - Codeception for - - Phalcon

    - +
    +
    +
    +
    +

    + Codeception for + Phalcon

    +
    +
    -
    -
    diff --git a/_includes/phar.html b/_includes/phar.html index cd0f54074..203c45952 100644 --- a/_includes/phar.html +++ b/_includes/phar.html @@ -1,97 +1,110 @@ -
    -
    -