<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>CSS Test: page-break-after (invalid syntax)</title>
<link rel="author" href="mailto:mturnwall@revenution.com" title="Michael Turnwall">
<link rel="author" href="http://www.hp.com/" title="Hewlett-Packard Company">
<link rel="help" href="http://www.w3.org/TR/CSS21/page.html#page-break-props">
<meta content="paged invalid" name="flags">
<meta content="The syntax of the 'page-break-after' property is auto | always | avoid | left | right." name="assert">
<style type="text/css">

    div.noBreakAuto {
        page-break-after:always;
        page-break-after:auto auto;
    }
    div.noBreakLeft {
        page-break-after:auto;
        page-break-after:left always;
    }
    div.noBreakAlways {
        page-break-after:always always;
    }
    .dummy {
        color:gray;
    }

</style>
<script src="../resources/paged-media-test-utils.js"></script>
<script>

    if (window.testRunner)
        testRunner.dumpAsText();

    function test()
    {
        pageNumberForElementShouldBe('test1', 1);
        pageNumberForElementShouldBe('test2', 1);
        numberOfPagesShouldBe(2);
    }

</script>
</head>
<body onload="runPrintingTest(test)">
    <div class="noBreakAuto">This test must produce two pages of output. This sentence must be on the first page.</div>
    <div class="noBreakLeft" id="test1">This sentence must be at the top of the second page.</div>
    <div class="noBreakAlways dummy">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</div>
    <p id="test2">This must be the last sentence on the second and final page.</p>
</body>
</html>
