public function setUp()
 {
     $profilefile = __DIR__ . '/../../minisite.profile';
     if (!file_exists($profilefile)) {
         $profilefile = __DIR__ . '/../../minisite.profile.dist';
     }
     if (!file_exists($profilefile)) {
         // @codeCoverageIgnoreStart
         $this->fail('This test requires a connection to the minisite. Publish /tests/minisite/ somewhere, copy /tests/minisite.profile.dist to /tests/minisite.profile and adjust it.');
         // @codeCoverageIgnoreEnd
     }
     $this->client = new Client();
     $this->profile = new Profile($this->client);
     $this->profile->loadFile($profilefile);
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $output->writeln('Patience...');
     try {
         $starttime = time();
         $client = new Client();
         $violations = 0;
         $testedForms = new FormsCollection();
         $profile = new Profile($client);
         $profile->loadFile($this->resolvePath($input->getArgument('profile')));
         $profile->executePreScript();
         $pages = $profile->spider();
         foreach ($pages as $page) {
             $output->writeLn('<info>' . $page->getUri() . '</info>');
             foreach ($page->getForms() as $form) {
                 $output->writeln(self::INDENT . self::LEAF . $form->getHtml());
                 if ($testedForms->contains($form)) {
                     $output->writeln(self::INDENT . self::INDENT . self::LEAF . 'Already tested');
                     continue;
                 }
                 foreach ($profile->getRules() as $rule) {
                     if (!$rule->isValid($form)) {
                         $output->writeln(self::INDENT . self::INDENT . self::LEAF . "<error>" . $rule->getMessage() . "</error>");
                         ++$violations;
                     }
                 }
                 $testedForms->add($form);
             }
             $output->writeln('');
         }
         $output->writeln(sprintf('Duration: %s seconds', time() - $starttime));
         $output->writeln(sprintf('Found %s unique forms on %s pages', count($testedForms), count($pages)));
         if ($violations) {
             $output->writeln("<error>{$violations} violations found.</error>");
             return self::EXIT_FAIL;
         } else {
             $output->writeln('<info>Done.</info>');
             return self::EXIT_SUCCESS;
         }
     } catch (ConnectException $e) {
         $output->writeln(sprintf('<error>%s</error>', $e->getMessage()));
     }
 }