This may be a dumb question, but do you make unit tests for the HTML output of your PHP functions/scripts?
I try to keep my HTML and my PHP separate - i.e. HTML includes
I found the SimpleTest framework to be very useful, usually i use it for integration-tests and PhpUnit for unit-tests. They spare me a lot of manually submitted formulars, which i would do otherwise over and over again.
It became my habit to follow this points, when doing such integrations tests:
$webTestCase->assertText('...');
or $webTestCase->assertPattern('/.../');
.With some tiny helper functions, you can gain a lot of robustness. The following function will open a page and checks if the page was opened successfully without warnings. Since there is no compiler for PHP that can give out warnings at design time, you can at least make sure that your code will not produce errors or warnings.
public static function openPageWithNoWarnings($webTestCase, $page, $landingPage = null)
{
// check that page can be opened successfully
$webTestCase->assertTrue($webTestCase->get($page));
// check that there are no PHP warnings
$webTestCase->assertNoPattern('/(warning:|error:)/i', 'PHP error or warning on page!');
// check if landed on expected page (maybe a redirect)
if (!empty($landingPage))
{
$url = $webTestCase->getUrl();
$file = basename(parse_url($url, PHP_URL_PATH));
$webTestCase->assertEqual($page, $file,
sprintf('Expected page "%s", got page "%s".', page, $file));
}
}
Such tests will give you not much of work, you can start with very light tests, but they give you instantly feedback if something fails, with only one mouse click.