diff --git a/src/reftest/rasterize.py b/src/reftest/rasterize.py index 07a44842e40..f00c40df892 100644 --- a/src/reftest/rasterize.py +++ b/src/reftest/rasterize.py @@ -14,7 +14,7 @@ print output driver = webdriver.Firefox() -driver.set_window_size(800, 700) +driver.set_window_size(800, 1000) driver.get(input) screenshot = driver.get_screenshot_as_file(output) diff --git a/src/reftest/reftest.rs b/src/reftest/reftest.rs index 7d31981aa42..a60a60ac153 100644 --- a/src/reftest/reftest.rs +++ b/src/reftest/reftest.rs @@ -67,18 +67,20 @@ fn run_test(config: Config, file: ~str) { let servo_render = render_servo(config, file); let ref_render = render_ref(config, file); if servo_render != ref_render { - fail; + fail ~"rendered pages to not match"; } } type Render = ~[u8]; +const WIDTH: uint = 800; +const HEIGHT: uint = 600; + fn render_servo(config: Config, file: ~str) -> Render { let infile = file; let outfile = connect(config.work_dir, basename(file) + ".png"); run_pipeline_png(infile, outfile); - let buf = io::read_whole_file(outfile).get(); - return servo::image::base::load_from_memory(buf).get().data; + return sanitize_image(outfile); } fn render_ref(config: Config, file: ~str) -> Render { @@ -87,8 +89,18 @@ fn render_ref(config: Config, file: ~str) -> Render { let rasterize_path = rasterize_path(config); let prog = run::start_program("python", ~[rasterize_path, infile, outfile]); prog.finish(); - let buf = io::read_whole_file(outfile).get(); - return servo::image::base::load_from_memory(buf).get().data; + return sanitize_image(outfile); +} + +fn sanitize_image(file: ~str) -> Render { + let buf = io::read_whole_file(file).get(); + let image = servo::image::base::load_from_memory(buf).get(); + + // I don't know how to precisely control the rendered height of + // the Firefox output, so it is larger than we want. Trim it down. + assert image.width == WIDTH; + assert image.height >= HEIGHT; + vec::slice(image.data, 0, image.width * HEIGHT * 4) } fn install_rasterize_py(config: Config) {