facebook / memlab

A framework for finding JavaScript memory leaks and analyzing heap snapshots
https://facebook.github.io/memlab/
MIT License
4.35k stars 118 forks source link

memlab not navigating pages #39

Closed QAInsights closed 1 year ago

QAInsights commented 1 year ago

When I run the below scenario, the script is not navigating to any page clicks. It is just taking snapshots from the home page.

function url() {
  console.log("Returning URL");
  return 'https://store.qainsights.com/';
}

async function accessories(page) {
  console.log("Click on Accessories link");
  await page.click('//a[href="/accessories"]');
}

async function apparel(page) {
  console.log("Click on Apparel link");
  await page.click('//a[href="/apparel"]');
}

async function back(page) {
  console.log("Go to Home page");
  await page.click('//a[href="/"]');
}

module.exports = {accessories, apparel, back, url};

memlab version

memlab@1.1.28
 @memlab/heap-analysis@1.0.9
 @memlab/e2e@1.0.12
 @memlab/core@1.1.11
 @memlab/cli@1.0.14
 @memlab/api@1.0.11
JacksonGL commented 1 year ago

@QAInsights Please use the API mentioned in the documentation.

MemLab doesn't provide callback accessories or apparel. Use action instead:

function url() {
  console.log("Returning URL");
  return 'https://store.qainsights.com/';
}

async function action(page) {
  console.log("Click on Accessories link");
  await page.click('//a[href="/accessories"]');
}

async function back(page) {
  console.log("Go to Home page");
  await page.click('//a[href="/"]');
}

module.exports = {action, back, url};
function url() {
  console.log("Returning URL");
  return 'https://store.qainsights.com/';
}

async function action(page) {
  console.log("Click on Apparel link");
  await page.click('//a[href="/apparel"]');
}

async function back(page) {
  console.log("Go to Home page");
  await page.click('//a[href="/"]');
}

module.exports = {action, back, url};

PS: console.log is not recommended in test script as it will disrupt the memlab console output.

JacksonGL commented 1 year ago

Also double check the correctness of the css selector. The website under test is having some infinite loop dumping tons of console.error messages in web console

QAInsights commented 1 year ago

Thank @JacksonGL I was using Firefox to inspect the elements. In FF Console, I do not see any recursive errors, but in Chrome it is showing up. Below code is working fine, but it is crashing due to recursive logging.

Let me try with another app.

const scenario = {
  url: () => 'https://store.qainsights.com/',
  action: async (page) => {
    await page.click('a[href="/apparel"]');
  },
  back: async (page) => {
    await page.click('a[href="/"]');
  },
}

module.exports = scenario;
QAInsights commented 1 year ago

@JacksonGL Finally I was able to take a snapshot :)

const scenario = {
  url: () => 'https://academy.qainsights.com/courses',
  action: async (page) => {
    await page.click('a[href="/about"]');
  },
  back: async (page) => {
    await page.click('a[href="/courses"]');
  },
}

module.exports = scenario;