chromium/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/historical.window.js

// META: script=./resources/targetted-form.js

test(t => {
  const form = populateForm('<input required><input type=submit>');
  t.add_cleanup(() => {
    form.previousElementSibling.remove();
    form.remove();
  });
  const submitter = form.querySelector('input[type=submit]');
  let invalid = form.querySelector('[required]');
  let targets = [];
  const listener = e => targets.push(e.target.localName);
  form.addEventListener("invalid", t.step_func(listener));
  form.oninvalid = t.step_func(listener);
  invalid.addEventListener("invalid", t.step_func(listener));
  invalid.oninvalid = t.step_func(listener);
  submitter.click();
  assert_array_equals(targets, ["input", "input"]);
}, "invalid event is only supported for form controls");