Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Lighthouse #1832

Closed
eldaduzman opened this issue Mar 5, 2022 · 6 comments
Closed

Support Lighthouse #1832

eldaduzman opened this issue Mar 5, 2022 · 6 comments
Labels
closeable? This issue should be closed? enhancement New feature or request

Comments

@eldaduzman
Copy link

Is your feature request related to a problem? Please describe.

Google lighthouse is an awesome client side performance and accessibility testing tool.

It has a good integration with playwright using an nmp package.

It can be very easily used by rf-browser with JS extension,
For example:

js-extensions/rfbrowser-lighthouse.js:

const { playAudit } = require('playwright-lighthouse');
var path = require('path');
async function runGoogleLighthouse(page, args) {
  await playAudit({
    page: page,
    port: args[0],
    thresholds: {
      performance: 20,
      accessibility: 80,
      'best-practices': 20,
      seo: 80,
      pwa: 20,
    },
    reports: {
      formats: {
        html: true,
        csv: true,
      },
      directory: path.join(args[1], `lighthouse`)
    }
  });
}
runGoogleLighthouse.rfdoc = "Executes googles lighthouse on current page context";
exports.__esModule = true;
exports.runGoogleLighthouse = runGoogleLighthouse;

test.robot:

*** Settings ***
Library           Browser    jsextension=${CURDIR}/js-extensions/rfbrowser-lighthouse.js
Library           Collections

*** Variables ***
${PORT}           9222

*** Test Cases ***
Example Test
    ${args}    Create List    --remote-debugging-port=${PORT}
    New Context    args=${args}
    New Browser    headless=false
    New Page    https://playwright.dev

    Run Google Lighthouse    ${PORT}    ${CURDIR}

The problem is when you need to authenticate.
Lighthouse opens a new browser context and this means that all authentication fields are gone.

Describe the solution you'd like
One option is to use Persistent Context with playwrights launchPersistentContext function.
This can take a directory for storage and other properties and then when lighthouse is activated it keeps the context.

So I guess adding a new persistent context keyword which takes a path as first input and all the other context arguments next would solve this problem.

Describe alternatives you've considered
Maybe it is possible to explicitly support executing lighthouse from rf-browser using a designated keyword, however this might not be flexible enough, + it could require too much maintenance efforts.

Additional context
I've tried to create a persistent context with a js extention:

async function getPersistentContextPage(page, args, logger, playwright) {
  tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), appPrefix));
  logger(tmpDir);
  context= await playwright['chromium'].launchPersistentContext(tmpDir, {
    args: ['--remote-debugging-port=9222'],
    headless: false
  });
  logger('done creating');

  return context
}

But it's not being stored on rf-browsers cache so it doesn't solve the problem.

@aaltat
Copy link
Member

aaltat commented Mar 9, 2022

@allcontributors please add @eldaduzman for ideas

@allcontributors
Copy link
Contributor

@aaltat

I've put up a pull request to add @eldaduzman! 🎉

@aaltat aaltat added enhancement New feature or request priority: high labels Mar 9, 2022
@aaltat
Copy link
Member

aaltat commented Nov 12, 2023

Can we close this one because persistent context keyword exists?

@aaltat aaltat added the closeable? This issue should be closed? label Nov 12, 2023
@Snooz82
Copy link
Member

Snooz82 commented Nov 15, 2023

@leeuwe Do you think we could move that issue as feature request to browser extensions repository?

@leeuwe
Copy link
Member

leeuwe commented Nov 15, 2023

Sure!

@Snooz82
Copy link
Member

Snooz82 commented Nov 15, 2023

closed in favour of MarketSquare/robotframework-browser-extensions#15

@Snooz82 Snooz82 closed this as completed Nov 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
closeable? This issue should be closed? enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants