testing against a console log for a printed message

Viewed 69

Hi everyone i am quite new to protractor and jasmine and i am expecting to see a particular message in the info level of my browser logs is there recommended way of doing this? i have tried this

describe('SearchResultsComponent', () => {
  let spy;
  
  let myFunction = (log) => {
    console.log(log);
  };
  myFunction(log);
  
  beforeAll(async () => {
    spy = jest.fn();
  });

  test('Function prints message: "hello"', () => {
    const log = 'hello';
    spy = jest.spyOn(console, 'log');
    myFunction(log);
    expect(spy).toHaveBeenCalled();
    expect(spy.calls.argsFor(0)).toEqual(['hello']);
  });
});
1 Answers

Try using puppetter with protractor:

in protractor config file:

capabilities: {
   browserName: 'chrome',
   
       chromeOptions: {
     args: ['--remote-debugging-port=9222']
             },

},

And connect to the already opened browser using puppetteer:

let puppeteer = require('puppeteer')

describe('workspace-project App', function() {
    it('Test Puppeteer screenshot', async function() {
        await browser.get("http://127.0.0.1:9222/json/version")
        let json = JSON.parse(await $('pre').getText())
        let debugurl = json.webSocketDebuggerUrl
        let browserpuppeter = await puppeteer.connect({
            browserURL: "http://127.0.0.1:9222"
        });
        //let page = await browserpuppeter.newPage();
        let page = (await browserpuppeter.pages())
        console.log(page.length)
        page = page[0]
        //page = await  browserpuppeter.newPage()
        await page.goto("https://stackoverflow.com/questions/60761480/how-to-store-console-output-as-a-variable-puppeteer")
        await page.setViewport({
            width: 1920,
            height: 1080,
            //deviceScaleFactor: 1,
        });
        await page
            .on('console', message =>
                console.log(`${message.type().substr(0, 3).toUpperCase()} ${message.text()}`))

        await page.evaluate(() => console.log('hello', 5, {
            foo: 'bar'
        }));

        await browser.sleep(10000)
        

    });


});
Related