codeception Создание собственных функций для $I -- Actors (Действующее лицо)

В codeception действия теста (например) происходят от лица некоторой сущности (лица -- класса) -- именно экземпляр этого класса присваивается переменной $I (традиционно используют именно такое имя переменной).

Обычно это экземпляр класса AcceptanceTester:

$I = new AcceptanceTester($scenario);

-- именно в этот класс можно добавлять новые собственные функции (они тоже станут доступны через $I), которые будут использоваться часто, в исходном виде он выглядит так:

class AcceptanceTester extends \Codeception\Actor
{
    use _generated\AcceptanceTesterActions;

   /**
    * Define custom actions here
    */
}

Мы можем добавить сюда метод login - ведь логинть пользователя скорее всего придётся не один раз в разных тестах:

class AcceptanceTester extends \Codeception\Actor
{
    // do not ever remove this line!
    use _generated\AcceptanceTesterActions;

    public function login($name, $password)
    {
        $I = $this;
        $I->amOnPage('/login');
        $I->submitForm('#loginForm', [
            'login' => $name,
            'password' => $password
        ]);
        $I->see($name, '.navbar');
    }
}

-- это позволит переиспользовать код, но есть и более продвинутые методы, а именно:

Источник: https://codeception.com/docs/06-ReusingT...