diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py index 875137ff536..9892a0e6669 100644 --- a/python/servo/testing_commands.py +++ b/python/servo/testing_commands.py @@ -201,52 +201,11 @@ class MachCommands(CommandBase): @Command('test-ref', description='Run the reference tests', category='testing') - @CommandArgument('--kind', '-k', default=DEFAULT_RENDER_MODE, - help=HELP_RENDER_MODE) - @CommandArgument('--release', '-r', action='store_true', - help='Run with a release build of Servo') - @CommandArgument('--include', default=None, nargs='+', - help="Only run tests that match this pattern. If the " - "path to the ref test directory is included, it " - "will automatically be trimmed out.") - @CommandArgument( - 'servo_params', default=None, nargs=argparse.REMAINDER, - help="Command-line arguments to be passed through to Servo") - def test_ref(self, kind=DEFAULT_RENDER_MODE, include=None, servo_params=None, - release=False): - self.ensure_bootstrapped() - self.ensure_built_tests(release=release) - assert kind is not None, 'kind cannot be None, see help' - - kinds = ["cpu", "gpu"] if kind == 'both' else [kind] - test_path = path.join(self.context.topdir, "tests", "ref") - error = False - - test_start = time() - for k in kinds: - print("Running %s reftests..." % k) - test_args = [k, test_path] - if include is not None: - ref_path = path.join("tests", "ref") - for name in include: - # Check to see if we were passed something leading with the - # path to the ref test directory, and trim it so that reftest - # knows how to filter it. - maybe_path = path.normpath(name) - if ref_path in maybe_path: - test_args.append(path.relpath(maybe_path, ref_path)) - else: - test_args.append(name) - if servo_params is not None: - test_args += ["--"] + servo_params - ret = self.run_test("reftest", test_args, release=release) - error = error or ret != 0 - elapsed = time() - test_start - - print("Reference tests completed in %0.2fs" % elapsed) - - if error: - return 1 + @CommandArgument('params', default=None, nargs=argparse.REMAINDER) + def test_ref(self, params=None): + print("Ref tests have been replaced by web-platform-tests under " + "tests/wpt/mozilla/.") + return 0 @Command('test-content', description='Run the content tests', diff --git a/python/tidy.py b/python/tidy.py index a3a7bf65ab9..10c07bde16a 100644 --- a/python/tidy.py +++ b/python/tidy.py @@ -19,8 +19,6 @@ import sys from licenseck import licenses filetypes_to_check = [".rs", ".rc", ".cpp", ".c", ".h", ".lock", ".py", ".toml", ".webidl"] -reftest_dir = "./tests/ref" -reftest_filetype = ".list" ignored_files = [ # Upstream @@ -62,10 +60,6 @@ def should_check(file_name): return True -def should_check_reftest(file_name): - return file_name.endswith(reftest_filetype) - - EMACS_HEADER = "/* -*- Mode:" VIM_HEADER = "/* vim:" MAX_LICENSE_LINESPAN = max(len(license.splitlines()) for license in licenses) @@ -517,44 +511,6 @@ def collect_errors_for_files(files_to_check, checking_functions, line_checking_f yield (filename,) + error -def check_reftest_order(files_to_check): - for file_name in files_to_check: - with open(file_name, "r") as fp: - split_lines = fp.read().splitlines() - lines = filter(lambda l: len(l) > 0 and l[0] != '#', split_lines) - for idx, line in enumerate(lines[:-1]): - next_line = lines[idx + 1] - current = get_reftest_names(line) - next = get_reftest_names(next_line) - if current is not None and next is not None and current > next: - yield (file_name, split_lines.index(next_line) + 1, "line not in alphabetical order") - - -def get_reftest_names(line): - tokens = line.split() - if len(tokens) == 3: - return tokens[1] + tokens[2] - if len(tokens) == 4: - return tokens[2] + tokens[3] - return None - - -def get_html_file_names_from_reftest_list(reftest_dir, file_name): - for line in open(os.path.join(reftest_dir, file_name), "r"): - for token in line.split(): - if fnmatch.fnmatch(token, '*.html'): - yield os.path.join(reftest_dir, token) - - -def check_reftest_html_files_in_basic_list(reftest_dir): - basic_list_files = set(get_html_file_names_from_reftest_list(reftest_dir, "basic" + reftest_filetype)) - - for file_name in os.listdir(reftest_dir): - file_path = os.path.join(reftest_dir, file_name) - if fnmatch.fnmatch(file_path, '*.html') and file_path not in basic_list_files: - yield (file_path, "", "not found in basic.list") - - def check_wpt_lint_errors(): wpt_working_dir = os.path.abspath(os.path.join(".", "tests", "wpt", "web-platform-tests")) site.addsitedir(wpt_working_dir) @@ -586,11 +542,6 @@ def scan(faster=False): line_checking_functions = (check_license, check_by_line, check_toml, check_rust, check_spec) errors = collect_errors_for_files(files_to_check, checking_functions, line_checking_functions) - # reftest checks - reftest_to_check = filter(should_check_reftest, get_file_list(reftest_dir, faster)) - r_errors = check_reftest_order(reftest_to_check) - not_found_in_basic_list_errors = check_reftest_html_files_in_basic_list(reftest_dir) - # wpt lint checks if faster: print "\033[93mUsing test-tidy \033[01m--faster\033[22m, skipping WPT lint\033[0m" @@ -599,7 +550,7 @@ def scan(faster=False): wpt_lint_errors = check_wpt_lint_errors() # collect errors - errors = itertools.chain(errors, r_errors, not_found_in_basic_list_errors, wpt_lint_errors) + errors = itertools.chain(errors, wpt_lint_errors) error = None for error in errors: diff --git a/tests/ref/100x100_green.png b/tests/ref/100x100_green.png deleted file mode 100644 index b23bbba154e..00000000000 Binary files a/tests/ref/100x100_green.png and /dev/null differ diff --git a/tests/ref/2x4.png b/tests/ref/2x4.png deleted file mode 100644 index 7efc762459b..00000000000 Binary files a/tests/ref/2x4.png and /dev/null differ diff --git a/tests/ref/basic.list b/tests/ref/basic.list deleted file mode 100644 index 4ee563b6c09..00000000000 --- a/tests/ref/basic.list +++ /dev/null @@ -1,8 +0,0 @@ -# This file must be sorted alphabetically. -# Please run `./mach test-tidy` to check your changes. - -# Should be == with expected failure: -fragment=top != ../html/acid2.html acid2_ref.html - -# This file must be sorted alphabetically. -# Please run `./mach test-tidy` to check your changes. diff --git a/tests/ref/css/ahem.css b/tests/ref/css/ahem.css deleted file mode 100644 index 51eede74aaa..00000000000 --- a/tests/ref/css/ahem.css +++ /dev/null @@ -1,5 +0,0 @@ -body { - font-family: 'ahem'; - font-size: 100px; - line-height: 1; -} diff --git a/tests/ref/css/displaynone.css b/tests/ref/css/displaynone.css deleted file mode 100644 index 525534e8ff4..00000000000 --- a/tests/ref/css/displaynone.css +++ /dev/null @@ -1,4 +0,0 @@ -body { - display: none; -} - diff --git a/tests/ref/png_rgba_colorspace_a.png b/tests/ref/png_rgba_colorspace_a.png deleted file mode 100644 index 9b9bd17fe47..00000000000 Binary files a/tests/ref/png_rgba_colorspace_a.png and /dev/null differ diff --git a/tests/ref/reset.css b/tests/ref/reset.css deleted file mode 100644 index e5156472701..00000000000 --- a/tests/ref/reset.css +++ /dev/null @@ -1,48 +0,0 @@ -/* http://meyerweb.com/eric/tools/css/reset/ - v2.0 | 20110126 - License: none (public domain) -*/ - -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} -/* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; -} -body { - line-height: 1; -} -ol, ul { - list-style: none; -} -blockquote, q { - quotes: none; -} -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; -} -table { - border-collapse: collapse; - border-spacing: 0; -} diff --git a/tests/ref/rippy.jpg b/tests/ref/rippy.jpg deleted file mode 100644 index 2a1e0dc9e4c..00000000000 Binary files a/tests/ref/rippy.jpg and /dev/null differ diff --git a/tests/ref/rust-0.png b/tests/ref/rust-0.png deleted file mode 100644 index 20d93badf5e..00000000000 Binary files a/tests/ref/rust-0.png and /dev/null differ diff --git a/tests/ref/rust.png b/tests/ref/rust.png deleted file mode 100644 index 68b5ed31e7b..00000000000 Binary files a/tests/ref/rust.png and /dev/null differ diff --git a/tests/ref/rust_logo.png b/tests/ref/rust_logo.png deleted file mode 100644 index 20d93badf5e..00000000000 Binary files a/tests/ref/rust_logo.png and /dev/null differ diff --git a/tests/ref/test.jpeg b/tests/ref/test.jpeg deleted file mode 100644 index 3314a53600b..00000000000 Binary files a/tests/ref/test.jpeg and /dev/null differ diff --git a/tests/reftest.rs b/tests/reftest.rs deleted file mode 100644 index 376c5ac3c04..00000000000 --- a/tests/reftest.rs +++ /dev/null @@ -1,395 +0,0 @@ -// Copyright 2013 The Servo Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -#![feature(fs_walk)] -#![feature(slice_patterns)] -#![feature(test)] - -#[macro_use] extern crate bitflags; -extern crate image; -extern crate test; -extern crate url; -extern crate util; - -use image::{DynamicImage, GenericImage, ImageFormat, RgbImage}; -use std::env; -use std::ffi::OsStr; -use std::fs::{File, walk_dir}; -use std::io::{self, Read, Result, Write}; -use std::path::{Path, PathBuf}; -use std::process; -use std::process::{Command}; -use std::thread; -use std::time::Duration; -use test::run_tests_console; -use test::{AutoColor, DynTestName, DynTestFn, TestDesc, TestOpts, TestDescAndFn, ShouldPanic}; -use url::Url; - -bitflags!( - flags RenderMode: u32 { - const CPU_RENDERING = 0x00000001, - const GPU_RENDERING = 0x00000010, - const LINUX_TARGET = 0x00000100, - const MACOS_TARGET = 0x00001000, - const ANDROID_TARGET = 0x00010000 - } -); - - -fn main() { - let args: Vec = env::args().collect(); - let mut parts = args[1..].split(|e| &**e == "--"); - - let harness_args = parts.next().unwrap(); // .split() is never empty - let servo_args = parts.next().unwrap_or(&[]); - - let (render_mode_string, base_path, testnames) = match harness_args { - [ref render_mode_string, ref base_path, testnames..] => - (render_mode_string, base_path, testnames), - _ => panic!("USAGE: cpu|gpu base_path [testname ...]"), - }; - - let mut render_mode = match &**render_mode_string { - "cpu" => CPU_RENDERING, - "gpu" => GPU_RENDERING, - _ => panic!("First argument must specify cpu or gpu as rendering mode") - }; - if cfg!(target_os = "linux") { - render_mode.insert(LINUX_TARGET); - } - if cfg!(target_os = "macos") { - render_mode.insert(MACOS_TARGET); - } - if cfg!(target_os = "android") { - render_mode.insert(ANDROID_TARGET); - } - - let mut all_tests = vec!(); - println!("Scanning {} for manifests\n", base_path); - - for file in walk_dir(base_path).unwrap() { - let file = file.unwrap().path(); - let maybe_extension = file.extension(); - match maybe_extension { - Some(extension) => { - if extension == OsStr::new("list") && file.is_file() { - let len = all_tests.len(); - let mut tests = parse_lists(&file, testnames, servo_args, render_mode, len); - println!("\t{} [{} tests]", file.display(), tests.len()); - all_tests.append(&mut tests); - } - } - _ => {} - } - } - - let test_opts = TestOpts { - filter: None, - run_ignored: false, - logfile: None, - run_tests: true, - bench_benchmarks: false, - nocapture: false, - color: AutoColor, - }; - - match run(test_opts, - all_tests, - servo_args.iter().cloned().collect()) { - Ok(false) => process::exit(1), // tests failed - Err(_) => process::exit(2), // I/O-related failure - _ => (), - } -} - -fn run(test_opts: TestOpts, all_tests: Vec, - servo_args: Vec) -> io::Result { - // Verify that we're passing in valid servo arguments. Otherwise, servo - // will exit before we've run any tests, and it will appear to us as if - // all the tests are failing. - let mut command = Command::new(&servo_path()); - command - .args(&servo_args) - .arg("-z") - .arg("about:blank"); - - let mut child = match command.spawn() { - Ok(p) => p, - Err(e) => panic!("failed to execute process: {}", e), - }; - - // Wait for the shell to launch or to fail - thread::sleep(Duration::from_secs(1)); - child.kill().unwrap(); - let output = try!(child.wait_with_output()); - - let stderr = String::from_utf8(output.stderr).unwrap(); - - if stderr.contains("Unrecognized") { - println!("Servo: {}", stderr); - return Ok(false); - } - - run_tests_console(&test_opts, all_tests) -} - -#[derive(PartialEq)] -enum ReftestKind { - Same, - Different, -} - -struct Reftest { - name: String, - kind: ReftestKind, - files: [PathBuf; 2], - id: usize, - servo_args: Vec, - render_mode: RenderMode, - is_flaky: bool, - prefs: Vec, - fragment_identifier: Option, - resolution: Option, - pixel_ratio: Option, -} - -struct TestLine<'a> { - conditions: &'a str, - kind: &'a str, - file_left: &'a str, - file_right: &'a str, -} - -fn parse_lists(file: &Path, - filters: &[String], - servo_args: &[String], - render_mode: RenderMode, - id_offset: usize) - -> Vec { - let mut tests = Vec::new(); - let contents = { - let mut f = File::open(file).unwrap(); - let mut contents = String::new(); - f.read_to_string(&mut contents).unwrap(); - contents - }; - - for line in contents.lines() { - // ignore comments or empty lines - if line.starts_with("#") || line.is_empty() { - continue; - } - - let parts: Vec<&str> = line.split(' ').filter(|p| !p.is_empty()).collect(); - - let test_line = match parts.len() { - 3 => TestLine { - conditions: "", - kind: parts[0], - file_left: parts[1], - file_right: parts[2], - }, - 4 => TestLine { - conditions: parts[0], - kind: parts[1], - file_left: parts[2], - file_right: parts[3], - }, - _ => panic!("reftest line: '{}' doesn't match '[CONDITIONS] KIND LEFT RIGHT'", line), - }; - - let kind = match test_line.kind { - "==" => ReftestKind::Same, - "!=" => ReftestKind::Different, - part => panic!("reftest line: '{}' has invalid kind '{}'", line, part) - }; - - let base = env::current_dir().unwrap().join(file.parent().unwrap()); - - let file_left = base.join(test_line.file_left); - let file_right = base.join(test_line.file_right); - - let conditions_list = test_line.conditions.split(','); - let mut flakiness = RenderMode::empty(); - let mut prefs = vec![]; - let mut fragment_identifier = None; - let mut resolution = None; - let mut pixel_ratio = None; - for condition in conditions_list { - match condition { - "flaky_cpu" => flakiness.insert(CPU_RENDERING), - "flaky_gpu" => flakiness.insert(GPU_RENDERING), - "flaky_linux" => flakiness.insert(LINUX_TARGET), - "flaky_macos" => flakiness.insert(MACOS_TARGET), - _ => () - } - if condition.starts_with("prefs:\"") { - if let Some(joined) = condition.split("\"").nth(1) { - prefs.extend(joined.split(",").map(str::to_owned)); - } - } - if condition.starts_with("fragment=") { - fragment_identifier = Some(condition["fragment=".len()..].to_string()); - } - if condition.starts_with("resolution=") { - resolution = Some(condition["resolution=".len() ..].to_string()); - } - if condition.starts_with("device-pixel-ratio=") { - pixel_ratio = Some(condition["device-pixel-ratio=".len() ..].to_string() - .parse().expect("Invalid device-pixel-ratio")); - } - } - - let reftest = Reftest { - name: format!("{} {} {}", test_line.file_left, test_line.kind, test_line.file_right), - kind: kind, - files: [file_left, file_right], - id: id_offset + tests.len(), - render_mode: render_mode, - servo_args: servo_args.to_vec(), - is_flaky: render_mode.intersects(flakiness), - prefs: prefs, - fragment_identifier: fragment_identifier, - resolution: resolution, - pixel_ratio: pixel_ratio, - }; - - if filters.is_empty() || filters.iter().any(|pattern| reftest.name.contains(pattern)) { - tests.push(make_test(reftest)); - } - } - tests -} - -fn make_test(reftest: Reftest) -> TestDescAndFn { - let name = reftest.name.clone(); - TestDescAndFn { - desc: TestDesc { - name: DynTestName(name), - ignore: false, - should_panic: ShouldPanic::No, - }, - testfn: DynTestFn(Box::new(move || { - check_reftest(reftest); - })), - } -} - -fn capture(reftest: &Reftest, side: usize) -> (u32, u32, Vec) { - let png_filename = format!("/tmp/servo-reftest-{:06}-{}.png", reftest.id, side); - let mut command = Command::new(&servo_path()); - command - .args(&reftest.servo_args[..]) - .arg("--user-stylesheet").arg(util::resource_files::resources_dir_path().join("ahem.css")) - // Allows pixel perfect rendering of Ahem font and the HTML canvas for reftests. - .arg("-Z") - .arg("disable-text-aa,disable-canvas-aa") - .args(&["-f", "-o"]) - .arg(&png_filename) - .arg(&{ - let mut url = Url::from_file_path(&*reftest.files[side]).unwrap(); - url.fragment = reftest.fragment_identifier.clone(); - url.to_string() - }); - // CPU rendering is the default - if reftest.render_mode.contains(CPU_RENDERING) { - command.arg("-c"); - } - if reftest.render_mode.contains(GPU_RENDERING) { - command.arg("-g"); - } - for pref in &reftest.prefs { - command.arg("--pref"); - command.arg(pref); - } - if let Some(ref resolution) = reftest.resolution { - command.arg("--resolution"); - command.arg(resolution); - } - if let Some(pixel_ratio) = reftest.pixel_ratio { - command.arg("--device-pixel-ratio"); - command.arg(pixel_ratio.to_string()); - } - let (exit_status, stderr, stdout) = match command.output() { - Ok(output) => (output.status, output.stderr, output.stdout), - Err(e) => panic!("failed to execute process: {}", e), - }; - - if !stdout.is_empty() { - let stdout_filename = format!("/tmp/servo-reftest-{:06}-{}-stdout.txt", reftest.id, side); - let mut stdout_file = File::create(stdout_filename).unwrap(); - stdout_file.write_all(&stdout[..]).unwrap(); - } - - if !stderr.is_empty() { - let stderr_filename = format!("/tmp/servo-reftest-{:06}-{}-stderr.txt", reftest.id, side); - let mut stderr_file = File::create(stderr_filename).unwrap(); - stderr_file.write_all(&stderr[..]).unwrap(); - } - - assert!(exit_status.success()); - - let image = match image::open(&png_filename) { - Ok(DynamicImage::ImageRgb8(image)) => image, - Ok(image) => image.to_rgb(), - _ => panic!(), - }; - (image.width(), image.height(), image.into_raw()) -} - -fn servo_path() -> PathBuf { - let current_exe = env::current_exe().ok().expect("Could not locate current executable"); - current_exe.parent().unwrap().join("servo") -} - -fn check_reftest(reftest: Reftest) { - let (left_width, left_height, left_bytes) = capture(&reftest, 0); - let (right_width, right_height, right_bytes) = capture(&reftest, 1); - - // TODO(gw): This is a workaround for https://github.com/servo/servo/issues/7730 - if !reftest.is_flaky { - assert_eq!(left_width, right_width); - assert_eq!(left_height, right_height); - - let left_all_white = left_bytes.iter().all(|&p| p == 255); - let right_all_white = right_bytes.iter().all(|&p| p == 255); - - if left_all_white && right_all_white { - panic!("Both renderings are empty") - } - } - - let pixels = left_bytes.iter().zip(right_bytes.iter()).map(|(&a, &b)| { - if a == b { - // White for correct - 0xFF - } else { - // "1100" in the RGBA channel with an error for an incorrect value - // This results in some number of C0 and FFs, which is much more - // readable (and distinguishable) than the previous difference-wise - // scaling but does not require reconstructing the actual RGBA pixel. - 0xC0 - } - }).collect::>(); - - if pixels.iter().any(|&a| a < 255) { - let output = format!("/tmp/servo-reftest-{:06}-diff.png", reftest.id); - let mut file = File::create(&output).unwrap(); - let img_buf = RgbImage::from_raw(left_width, left_height, pixels).expect("foo"); - DynamicImage::ImageRgb8(img_buf).save(&mut file, ImageFormat::PNG).unwrap(); - - match (reftest.kind, reftest.is_flaky) { - (ReftestKind::Same, true) => println!("flaky test - rendering difference: {}", output), - (ReftestKind::Same, false) => panic!("rendering difference: {}", output), - (ReftestKind::Different, _) => {} // Result was different and that's what was expected - } - } else { - assert!(reftest.is_flaky || reftest.kind == ReftestKind::Same); - } -} diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index d6fc30b6a8f..44620f9b226 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -151,6 +151,19 @@ "url": "/_mozilla/css/acid1_a.html" } ], + "css/acid2-wrapper.html": [ + { + "path": "css/acid2-wrapper.html", + "references": [ + [ + "/_mozilla/css/acid2_ref_broken.html", + "==" + ] + ], + "timeout": "long", + "url": "/_mozilla/css/acid2-wrapper.html" + } + ], "css/acid2_noscroll.html": [ { "path": "css/acid2_noscroll.html", @@ -163,6 +176,18 @@ "url": "/_mozilla/css/acid2_noscroll.html" } ], + "css/acid2_ref.html": [ + { + "path": "css/acid2_ref.html", + "references": [ + [ + "/_mozilla/css/acid2_ref_broken.html", + "==" + ] + ], + "url": "/_mozilla/css/acid2_ref.html" + } + ], "css/after_block_iteration.html": [ { "path": "css/after_block_iteration.html", @@ -6194,6 +6219,19 @@ "url": "/_mozilla/css/acid1_a.html" } ], + "css/acid2-wrapper.html": [ + { + "path": "css/acid2-wrapper.html", + "references": [ + [ + "/_mozilla/css/acid2_ref_broken.html", + "==" + ] + ], + "timeout": "long", + "url": "/_mozilla/css/acid2-wrapper.html" + } + ], "css/acid2_noscroll.html": [ { "path": "css/acid2_noscroll.html", @@ -6206,6 +6244,18 @@ "url": "/_mozilla/css/acid2_noscroll.html" } ], + "css/acid2_ref.html": [ + { + "path": "css/acid2_ref.html", + "references": [ + [ + "/_mozilla/css/acid2_ref_broken.html", + "==" + ] + ], + "url": "/_mozilla/css/acid2_ref.html" + } + ], "css/after_block_iteration.html": [ { "path": "css/after_block_iteration.html", diff --git a/tests/wpt/mozilla/meta/css/acid2-wrapper.html.ini b/tests/wpt/mozilla/meta/css/acid2-wrapper.html.ini new file mode 100644 index 00000000000..f2657877a44 --- /dev/null +++ b/tests/wpt/mozilla/meta/css/acid2-wrapper.html.ini @@ -0,0 +1,3 @@ +[acid2-wrapper.html] + type: reftest + disabled: https://github.com/servo/servo/issues/9310 diff --git a/tests/wpt/mozilla/meta/css/acid2_ref.html.ini b/tests/wpt/mozilla/meta/css/acid2_ref.html.ini new file mode 100644 index 00000000000..55dd5ca27f3 --- /dev/null +++ b/tests/wpt/mozilla/meta/css/acid2_ref.html.ini @@ -0,0 +1,3 @@ +[acid2_ref.html] + type: reftest + expected: FAIL diff --git a/tests/wpt/mozilla/tests/css/acid2-wrapper.html b/tests/wpt/mozilla/tests/css/acid2-wrapper.html new file mode 100644 index 00000000000..d1907a92b64 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/acid2-wrapper.html @@ -0,0 +1,15 @@ + + + + + + diff --git a/tests/wpt/mozilla/tests/css/acid2.html b/tests/wpt/mozilla/tests/css/acid2.html new file mode 100755 index 00000000000..2f700b14e71 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/acid2.html @@ -0,0 +1,150 @@ + + + + The Second Acid Test + + + + +
+

Standards compliant?

+

Take The Acid2 Test and compare it to the reference rendering.

+
+

Hello World!

+
+

+

+
                              
+
ERROR
+
+
+
+
 
+
+
    +
  • +
  • +
  • +
  • +
+
+
+ + + diff --git a/tests/ref/acid2_ref.html b/tests/wpt/mozilla/tests/css/acid2_ref.html similarity index 94% rename from tests/ref/acid2_ref.html rename to tests/wpt/mozilla/tests/css/acid2_ref.html index a6cc0c01b28..d0b4e28ec3e 100644 --- a/tests/ref/acid2_ref.html +++ b/tests/wpt/mozilla/tests/css/acid2_ref.html @@ -2,6 +2,7 @@ The Second Acid Test (Reference Rendering) +