CodeceptJS icon indicating copy to clipboard operation
CodeceptJS copied to clipboard

webdriverio, window.fetch and basic Auth receive: Request cannot be constructed from a URL that includes credentials

Open ale-grosselle opened this issue 5 years ago • 1 comments

What are you trying to achieve?

I have a Basic Auth web page that contains a web form where user log in in our platform.

Setting the basicAuth WebDriver' attribute, The basic Auth works fine, but when we try to click the "Login button" of our web page, I receive: Request cannot be constructed from a URL that includes credentials web driver

This because the button click trigger a window.fetch call and the url contains the basic authentication.

What do you get instead?

Is there a method to force the set of the Authentication header instead of append credential into the url?

Details

  • CodeceptJS version: 3.0.2
  • NodeJS Version: v14.4.0
  • Operating System: Mac OS
  • webdriverio
  • Configuration file:

exports.config = {
  tests: './e2e/**/*.spec.js',
  output: './e2e/output',
  helpers: {
    WebDriver: {
      browser: 'chrome',
      host: '127.0.0.1',
      port: 4444,
      restart: false,
      windowSize: '1920x1680',
      basicAuth: env.basicAuth,
      url: env.baseURL,
      show: !headless,
      ignoreHTTPSErrors: true,
      emulate,
      fullPageScreenshots: true,
      chromium: {
        args: [
          '--ignore-certificate-errors',
          '--no-sandbox',
          '--disable-setuid-sandbox',
        ],
      },
    },
  },
  include: {
    I: './e2e/steps_file.js',
  },
  bootstrap: null,
  mocha: {},
  name: 'login page',
  plugins: {
    wdio: {
      enabled: true,
      services: ['selenium-standalone'],
    },
    autoLogin: autologin,
    retryFailedStep: {
      enabled: true,
    },
    screenshotOnFail: {
      enabled: true,
    },
  },
  multiple: {
    basic: {
      browsers,
    },
  },
};

ale-grosselle avatar Dec 24 '20 11:12 ale-grosselle

I have same problems with playwright, can be fixed only in Feature as:

Before(() => {
  I.haveRequestHeaders({ authorization: `Basic ${authHeader}=` });
});

AAZinnatullin avatar Dec 21 '21 07:12 AAZinnatullin