Don't get me wrong, it's great that @calixteman wanted to implement that — JS should definitely be supported! I don't want to come off as rude or attacking.

For starters, JS reference specified in the [commit comment](https://github.com/mozilla/pdf.js/commit/8de98079ca05f8f7001ee077771055a57dc0e948) is outdated. It's version 8.1 from 2007… We're more than decade past that now. We should be implementing [Acrobat DC SDK](https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/AcrobatDC_js_api_reference.pdf) ([here](https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/#t=Acro12_MasterBook%2FJS_API_AcroJS%2FJavaScript_API.htm) in a nice HTML version).

Other than that, the Doc object now is only implemented with `info` property with standard fields (`Title`, `Author`, `Subject`, `Keywords`, `Creator`, `Producer`, `CreationDate`, `ModDate` and `Trapped`, case insensitive). But [according to the spec](https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/AcrobatDC_js_api_reference.pdf#page=243) (even [in that old version](https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf#page=243)), this object can contain other, non-standard properties, that can be set both in Acrobat interface and in JS (which are case-sensitive then).

Acrobat 9.0 introduced another field to that property, `Authors`, containing semicolon-delimited list of authors.

There are probably other problems with that code due to the outdated spec @calixteman was apparently working on.
describe("in doc_actions.pdf for page actions", () => {
    let pages;
    beforeAll(async () => {
      pages = await loadAndWait("doc_actions.pdf", "#\\34 7R");
    });
    afterAll(async () => {
      await closePages(pages);
    });
    it("must execute PageOpen and PageClose actions", async () => {
      await Promise.all(
        pages.map(async ([browserName, page]) => {
          await page.waitForFunction(
            "window.PDFViewerApplication.scriptingReady === true"
          );
          let text = await page.$eval("#\\34 7R", el => el.value);
          expect(text).withContext(`In ${browserName}`).toEqual("PageOpen 1");
          for (let run = 0; run < 5; run++) {
            for (const ref of [18, 19, 20, 21, 47, 50]) {
              await page.evaluate(refElem => {
                const element = window.document.getElementById(`${refElem}R`);
                if (element) {
                  element.value = "";
                }
              }, ref);
            }
            for (const [refOpen, refClose, pageNumOpen, pageNumClose] of [
              [18, 50, 2, 1],
              [21, 19, 3, 2],
              [47, 20, 1, 3],
            ]) {