Skip to content

Try-catch in the second test catches fail in the first test #6716

@erolatex

Description

@erolatex

What are you trying to achieve?

Migrated from codeception 4 to 5
Try to use try-catches in tests and page methods and got strange behaviour:
If first test failed. Second test with try catch fails too, but all asserts is passed.
if first test passed. Second test works normal. (

What do you get instead?

Run Positive scenario: first test good, second test with try-catch good.

# php vendor/bin/codecept run tests/PositiveCest -vvv 

Provide test source code if related

<?php

namespace Tests;

use Tests\Support\AcceptanceTester;

class PositiveCest 
{    
    public function _before(AcceptanceTester $I)
    {
        $I->amOnUrl('https://google.com');
    }

    public function loginSuccessfully(AcceptanceTester $I)
    {
        $I->wait(1);
    }
    
    public function loginWithInvalidPassword(AcceptanceTester $I)
    {
        try {
            $I->waitForElementVisible('//membercat') | RuntimeException;
        } catch (\Exception){}
    }       
}
image

Run Negative scenario: first test failed, second test with try-catch should be passed.

# php vendor/bin/codecept run tests/NegativeCest -vvv 

Provide test source code if related

<?php

namespace Tests;

use Tests\Support\AcceptanceTester;

class NegativeCest 
{    
    public function _before(AcceptanceTester $I)
    {
        $I->amOnUrl('https://google.com');
    }

    public function loginSuccessfully(AcceptanceTester $I)
    {
        $I->wait(1);
        $I->fail('Test one fail message');
    }
    
    public function loginWithInvalidPassword(AcceptanceTester $I)
    {
        try {
            $I->waitForElementVisible('//membercat') | RuntimeException;
        } catch (\Exception){}
    }       
}
image

trace

Scenario Steps:

 2. $I->waitForElementVisible("//membercat") at tests/NegativeCest.php:23
 1. $I->amOnUrl("https://google.com") at tests/NegativeCest.php:11

/Users/erolatex/Documents/projects/codeception/vendor/phpunit/phpunit/src/Framework/Assert.php:2286
/Users/erolatex/Documents/projects/codeception/vendor/codeception/lib-asserts/src/Codeception/Util/Shared/InheritedAsserts.php:1185
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/src/Codeception/Step.php:289
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/src/Codeception/Scenario.php:76
/Users/erolatex/Documents/projects/codeception/tests/Support/_generated/AcceptanceTesterActions.php:5073
/Users/erolatex/Documents/projects/codeception/tests/NegativeCest.php:17
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/src/Codeception/Lib/Di.php:130
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/src/Codeception/Test/Cest.php:184
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/src/Codeception/Test/Cest.php:200
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/src/Codeception/Test/Cest.php:129
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/src/Codeception/Test/Test.php:168
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/src/Codeception/Suite.php:130
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/src/Codeception/SuiteManager.php:148
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/src/Codeception/Codecept.php:260
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/src/Codeception/Codecept.php:216
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/src/Codeception/Command/Run.php:435
/Users/erolatex/Documents/projects/codeception/vendor/symfony/console/Command/Command.php:326
/Users/erolatex/Documents/projects/codeception/vendor/symfony/console/Application.php:1063
/Users/erolatex/Documents/projects/codeception/vendor/symfony/console/Application.php:320
/Users/erolatex/Documents/projects/codeception/vendor/symfony/console/Application.php:174
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/src/Codeception/Application.php:112
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/app.php:45
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/app.php:46
/Users/erolatex/Documents/projects/codeception/vendor/codeception/codeception/codecept:7
/Users/erolatex/Documents/projects/codeception/vendor/bin/codecept:119

Artifacts:

Png: /Users/erolatex/Documents/projects/codeception/tests/_output/Tests.NegativeCest.loginWithInvalidPassword.fail.png
Html: /Users/erolatex/Documents/projects/codeception/tests/_output/Tests.NegativeCest.loginWithInvalidPassword.fail.html

FAILURES!
Tests: 2, Assertions: 1, Failures: 1.

Details

full source code https://github.com/erolatex/codeception-try-catch/tree/master

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions