Acceptance.php is an helper class, that will provide module-like capabilities. It is usually used for extending Codeception behaviour for your acceptance scripts. A common usage is the access to hidden API methods.
// retrieving webdriver session
/**@var $table \Facebook\WebDriver\WebDriverElement */
$elements = $this->getModule('WebDriver')->_findElements('#result');
$table = reset($elements);
$results = $table->findElements('tr');
// asserting that table contains exactly $num rows
AcceptanceTester.php is an actor class, i.e. definition of the actions for your actor
$I. This should only contains actions and assertions for your scenarios. It can possibly make use of methods defined in helpers.
class AcceptanceTester extends \Codeception\Actor
// do not ever remove this line!
public function login($name, $password)
$I = $this;
'login' => $name,
'password' => $password
I agree that you can do everything with helper, but I would recommend to keep behaviour (sequence of actions) in the actor class, and use the helper for building new unitary action (e.g. parsing an HTML table).
Using a BDD approach, the actions for your Gherkin scripts should be in
Acceptance.php and complex code logic (e.g.
seeNumResults above) in your
AcceptanceHelper.php and consumed by your actor class.