Giter VIP home page Giter VIP logo

ui's Introduction

Stand With Ukraine

NPM version AI features StandWithUkraine

Build Status:

Appium Helper: Appium V2 Tests - Android Appium V2 Tests - iOS

Web Helper: Playwright Tests Puppeteer Tests WebDriver Tests TestCafe Tests

CodeceptJS Made in Ukraine

Reference: Helpers API

Supercharged E2E Testing

CodeceptJS is a new testing framework for end-to-end testing with WebDriver (or others). It abstracts browser interaction to simple steps that are written from a user's perspective. A simple test that verifies the "Welcome" text is present on a main page of a site will look like:

Feature('CodeceptJS demo');

Scenario('check Welcome page on site', ({ I }) => {
  I.amOnPage('/');
  I.see('Welcome');
});

CodeceptJS tests are:

  • Synchronous. You don't need to care about callbacks or promises or test scenarios which are linear. But, your tests should be linear.
  • Written from user's perspective. Every action is a method of I. That makes test easy to read, write and maintain even for non-tech persons.
  • Backend API agnostic. We don't know which WebDriver implementation is running this test.

CodeceptJS uses Helper modules to provide actions to I object. Currently, CodeceptJS has these helpers:

  • Playwright - is a Node library to automate the Chromium, WebKit and Firefox browsers with a single API.
  • Puppeteer - uses Google Chrome's Puppeteer for fast headless testing.
  • WebDriver - uses webdriverio to run tests via WebDriver or Devtools protocol.
  • TestCafe - cheap and fast cross-browser test automation.
  • Appium - for mobile testing with Appium
  • Detox - This is a wrapper on top of Detox library, aimed to unify testing experience for CodeceptJS framework. Detox provides a grey box testing for mobile applications, playing especially well for React Native apps.

And more to come...

Why CodeceptJS?

CodeceptJS is a successor of Codeception, a popular full-stack testing framework for PHP. With CodeceptJS your scenario-driven functional and acceptance tests will be as simple and clean as they can be. You don't need to worry about asynchronous nature of NodeJS or about various APIs of Playwright, Selenium, Puppeteer, TestCafe, etc. as CodeceptJS unifies them and makes them work as they are synchronous.

Features

  • 🪄 AI-powered with GPT features to assist and heal failing tests.
  • ☕ Based on Mocha testing framework.
  • 💼 Designed for scenario driven acceptance testing in BDD-style.
  • 💻 Uses ES6 natively without transpiler.
  • Also plays nice with TypeScript.
  • </> Smart locators: use names, labels, matching text, CSS or XPath to locate elements.
  • 🌐 Interactive debugging shell: pause test at any point and try different commands in a browser.
  • Easily create tests, pageobjects, stepobjects with CLI generators.

Installation

npm i codeceptjs --save

Move to directory where you'd like to have your tests (and CodeceptJS config) stored, and execute:

npx codeceptjs init

to create and configure test environment. It is recommended to select WebDriver from the list of helpers, if you need to write Selenium WebDriver tests.

After that create your first test by executing:

npx codeceptjs generate:test

Now test is created and can be executed with

npx codeceptjs run

If you want to write your tests using TypeScript just generate standard Type Definitions by executing:

npx codeceptjs def .

Later you can even automagically update Type Definitions to include your own custom helpers methods.

Note:

  • CodeceptJS requires Node.js version 12+ or later.

Usage

Learn CodeceptJS by examples. Let's assume we have CodeceptJS installed and WebDriver helper enabled.

Basics

Let's see how we can handle basic form testing:

Feature('CodeceptJS Demonstration');

Scenario('test some forms', ({ I }) => {
  I.amOnPage('http://simple-form-bootstrap.plataformatec.com.br/documentation');
  I.fillField('Email', '[email protected]');
  I.fillField('Password', secret('123456'));
  I.checkOption('Active');
  I.checkOption('Male');
  I.click('Create User');
  I.see('User is valid');
  I.dontSeeInCurrentUrl('/documentation');
});

All actions are performed by I object; assertions functions start with see function. In these examples all methods of I are taken from WebDriver helper, see reference to learn how to use them.

Let's execute this test with run command. Additional option --steps will show us the running process. We recommend use --steps or --debug during development.

npx codeceptjs run --steps

This will produce an output:

CodeceptJS Demonstration --
 test some forms
 • I am on page "http://simple-form-bootstrap.plataformatec.com.br/documentation"
 • I fill field "Email", "[email protected]"
 • I fill field "Password", "****"
 • I check option "Active"
 • I check option "Male"
 • I click "Create User"
 • I see "User is valid"
 • I dont see in current url "/documentation"
 ✓ OK in 17752ms

CodeceptJS has an ultimate feature to help you develop and debug your test. You can pause execution of test in any place and use interactive shell to try different actions and locators. Just add pause() call at any place in a test and run it.

Interactive shell can be started outside test context by running:

npx codeceptjs shell

Actions

We filled form with fillField methods, which located form elements by their label. The same way you can locate element by name, CSS or XPath locators in tests:

// by name
I.fillField('user_basic[email]', '[email protected]');
// by CSS
I.fillField('#user_basic_email', '[email protected]');
// don't make us guess locator type, specify it
I.fillField({css: '#user_basic_email'}, '[email protected]');

Other methods like checkOption, and click work in a similar manner. They can take labels or CSS or XPath locators to find elements to interact.

Assertions

Assertions start with see or dontSee prefix. In our case we are asserting that string 'User is valid' is somewhere in a webpage. However, we can narrow the search to particular element by providing a second parameter:

I.see('User is valid');
// better to specify context:
I.see('User is valid', '.alert-success');

In this case 'User is valid' string will be searched only inside elements located by CSS .alert-success.

Grabbers

In case you need to return a value from a webpage and use it directly in test, you should use methods with grab prefix. They are expected to be used inside async/await functions, and their results will be available in test:

Feature('CodeceptJS Demonstration');

Scenario('test page title', async ({ I }) => {
  I.amOnPage('http://simple-form-bootstrap.plataformatec.com.br/documentation');
  const title = await I.grabTitle();
  I.expectEqual(title, 'Example application with SimpleForm and Twitter Bootstrap'); // Avaiable with Expect helper. -> https://codecept.io/helpers/Expect/
});

The same way you can grab text, attributes, or form values and use them in next test steps.

Before/After

Common preparation steps like opening a web page, logging in a user, can be placed in Before or Background:

const { I } = inject();

Feature('CodeceptJS Demonstration');

Before(() => { // or Background
  I.amOnPage('http://simple-form-bootstrap.plataformatec.com.br/documentation');
});

Scenario('test some forms', () => {
  I.click('Create User');
  I.see('User is valid');
  I.dontSeeInCurrentUrl('/documentation');
});

Scenario('test title', () => {
  I.seeInTitle('Example application');
});

PageObjects

CodeceptJS provides the most simple way to create and use page objects in your test. You can create one by running

npx codeceptjs generate pageobject

It will create a page object file for you and add it to the config. Let's assume we created one named docsPage:

const { I } = inject();

module.exports = {
  fields: {
    email: '#user_basic_email',
    password: '#user_basic_password'
  },
  submitButton: {css: '#new_user_basic input[type=submit]'},

  sendForm(email, password) {
    I.fillField(this.fields.email, email);
    I.fillField(this.fields.password, password);
    I.click(this.submitButton);
  }
}

You can easily inject it to test by providing its name in test arguments:

Feature('CodeceptJS Demonstration');

Before(({ I }) => { // or Background
  I.amOnPage('http://simple-form-bootstrap.plataformatec.com.br/documentation');
});

Scenario('test some forms', ({ I, docsPage }) => {
  docsPage.sendForm('[email protected]','123456');
  I.see('User is valid');
  I.dontSeeInCurrentUrl('/documentation');
});

When using Typescript, replace module.exports with export for autocompletion.

Contributing

Contributors

Thanks all to those who are and will have contributing to this awesome project!

License

MIT © CodeceptJS Team

ui's People

Contributors

anirudh-modi avatar arhell avatar avinash360 avatar bnpatel1990 avatar davertmik avatar dependabot[bot] avatar hubidu avatar iamhollow avatar kaflan avatar kobenguyent avatar lukasf98 avatar markus-gx avatar mikhailroot avatar mirhacode avatar nitishmittal1990 avatar perdjurner avatar rdherric avatar reiz avatar spiroid avatar steve1607 avatar vanodevium avatar vb-oiko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ui's Issues

Missing UUID declaration in package.json

What are you trying to achieve?

Run codecept-ui

What do you get instead?

yarn run v1.22.4
$ codecept-ui
internal/modules/cjs/loader.js:497
  throw new ERR_PACKAGE_PATH_NOT_EXPORTED(basePath, mappingKey);
  ^

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './v4' is not defined by "exports" in /node_modules/uuid/package.json
    at applyExports (internal/modules/cjs/loader.js:497:9)
    at resolveExports (internal/modules/cjs/loader.js:513:23)
    at Function.Module._findPath (internal/modules/cjs/loader.js:641:31)
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:1016:27)
    at Function.Module._load (internal/modules/cjs/loader.js:898:27)
    at Module.require (internal/modules/cjs/loader.js:1089:19)
    at require (internal/modules/cjs/helpers.js:73:18)
    at Object.<anonymous> (/node_modules/@codeceptjs/ui/lib/codeceptjs/console-recorder.helper.js:3:14)
    at Module._compile (internal/modules/cjs/loader.js:1200:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10) {
  code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
}

Environment info

codeceptVersion:  "2.6.6"
nodeInfo:  14.3.0
osInfo:  Linux 4.15 Ubuntu 18.04.4 LTS (Bionic Beaver)
cpuInfo:  (16) x64 AMD Ryzen 7 2700X Eight-Core Processor
chromeInfo:  83.0.4103.116
edgeInfo:  N/A
firefoxInfo:  78.0.1
safariInfo:  N/A
helpers:  {
 "WebDriver": {
  "url": "http://localhost/",
  "browser": "chrome",
  "host": "127.0.0.1",
  "port": 4444,
  "restart": false,
  "smartWait": 5000,
  "windowSize": "360x683",
  "desiredCapabilities": {
   "chromeOptions": {
    "args": [
     "--disable-gpu",
     "--no-sandbox"
    ]
   }
  }
 }
}
plugins:  {
 "screenshotOnFail": {
  "enabled": true
 },
 "retryFailedStep": {
  "enabled": true
 },
 "wdio": {
  "enabled": true,
  "services": [
   "selenium-standalone"
  ]
 }
}

We are using the uuid package. You are using some uuid package too in console-recorder.helper.js but since there is no dependency declared in the package.json. When running codecept-ui it try to use the installed package and crash

RangeError: Maximum call stack size exceeded

UI start fine, but when run some test, node console shows this:

Unhandled rejection
RangeError: Maximum call stack size exceeded
RangeError: Maximum call stack size exceeded
    at get (internal/bootstrap/pre_execution.js:313:8)
    at hasBinary (C:\test\node_modules\has-binary2\index.js:44:3)
    at hasBinary (C:\test\node_modules\has-binary2\index.js:58:59)

@codeceptjs/ui: 0.2.5
node: v13.10.1
os: win 10.0.18363.752

Edit Test doesn't work

Screenshot 2019-11-28 at 15 16 49

Clicking Edit test on test run page doesn't work.

Failed to open editor:  Error: Command failed: undefined "/Users/thanhnguyen/Desktop/ui/example/todomvc-tests/create-todos_test.js"
/bin/sh: undefined: command not found

Please, update your settings. Current editor command: undefined

Snapshots are not displaying my canvas elements

What are you trying to achieve?

My application is a canvas based app. So more less 80% of my app is running inside the canvas.

I'm trying to see via the taken snapshots my canvas elements but they are not being displayed.
Is there any limitation or configuration to make it work or is it just not available? I couldn't find anything...

Basically my tests are working and passing, even if I have to play with the canvas, like clicking and dragging and dropping stuffs, they do work, I also check it with puppeteer screenshots and everything seems to work. The only problem is the fact that I can not see the canvas on the Codecept UI. To not stay "blinded" during the development I'm always using the puppeteer screenshots which is not that bad but could be better if I could just use the codeceptui.

This is how my application looks like (the purple borders I put to highlight what is my canvas element):
Screenshot 2020-06-09 at 11 20 12

This is the output of my codecept ui
Screenshot 2020-06-09 at 11 34 04

My terminal output
image

And my devtools console output
output.txt

I do have lot of tests running on my project with codecept, but this snapshot view has never worked with my canvas elements.

What do you get instead?

I do get a snapshot of the page with a blank area where should be spotted my canvas element.

Provide test source code if related

I basically went to the page with my canvas element, there is nothing more than that.

Environment info

  • Copy and paste your environment info by using npx codeceptjs info
    I'm getting a error when I try do that, probably because my config is a javascript file, so I'm pasting it here
const {E2E_HEADLESS, IS_DEV} = require('../config');

exports.config = {
  tests: './__tests__/**/*.test.js',
  output: './output',
  timeout: 120000,
  noGlobals: false,
  helpers: {
    Puppeteer: {
      show: !E2E_HEADLESS,
      waitForNavigation: 'networkidle0',
      restart: false,
      keepBrowserState: true,
      slowMo: IS_DEV ? 1000 : 0,
      chrome: {
        devtools: false,
        defaultViewport: {
          width: 1440,
          height: 900
        },
        args: [
          '--disable-web-security',
          '--user-data-dir',
          '--disable-dev-tools',
          '--disable-gpu',
          '--font-render-hinting=none'
        ],
      }
    },
    CustomHelper: {
      require: './helpers/puppeteer.helper.js',
    }
  },
  include: {
    I: './actor.js'
  },
  mocha: {},
  name: 'e2e',
  plugins: {
    retryFailedStep: {
      enabled: true
    },
    screenshotOnFail: {
      enabled: true
    },
    customLocator: {
      enabled: true,
      attribute: 'data-test',
      prefix: '$',
    }
  }
};

Window size doesnt resize preview test runner window

#1 Load Codecept UI on your localhost
#2 Click on settings and change window size of your choice
#3 try running the test
Expected: The preview test runner should run the test on the new window size given as per config
Actual: The preview test runner still runs on 800x600

See attached screenshots
preview test runner
settings config

[Question] Screenshot on Testrun page

I notice that we have Screenshot link on Testrun page but I have no idea what it is about. Maybe we can remove it? Cause we already have snapshots, screenshots seem like a redundant thing.

Also it always gives a broken image. 🤔

Screenshot 2019-11-28 at 12 02 21

Show documentation for steps in interactive pause mode

  • update https://github.com/codecept-js/ui/blob/master/lib/api/list-actions.js to include
    • params (as it is now)
    • documentation
  • documentation can be taken from node_modules/codeceptjs/docs/webapi/**.mustache files
  • if documentation file does not exist - it's ok, just skip it
  • show documentation when an action is picked inside Interactive pause.
  • if action is edited (changed) documenation should be updated accordingly
  • if no documentation matches current action - show nothing

UI doesn't get updates about tests, likely because browser and electron block requests due to CORS policy

What are you trying to achieve?

When I run a test scenario I expect to get results in browser, similar to what I
see on demos and screenshots on the documentation.

Attaching screenshot with terminal, dev console in main browser and browser itself with codecept-ui.

Screenshot Screen Shot 2020-06-11 at 14 44 18

What do you get instead?

That seems unrelated to both test code and the running terminal, because terminal reports correct status.

Environment info

codeceptVersion:  "2.6.5"
nodeInfo:  12.16.2
osInfo:  macOS 10.15.4
cpuInfo:  (12) x64 Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
chromeInfo:  83.0.4103.97
edgeInfo:  Not Found
firefoxInfo:  Not Found
safariInfo:  13.1
helpers:  {
 "Playwright": {
  "url": "http://localhost:3000",
  "show": true,
  "browser": "chromium"
 }
}
plugins:  {
 "screenshotOnFail": {
  "enabled": true
 },
 "retryFailedStep": {
  "enabled": true
 }
}

Additionally, the main app is build with using create-react-app (CRA, react-scripts — for search through issues 😃) and ran in development mode.

The issue is the same for both modes: browser and app.

UX Improvement: Built-in Code Editor

We already use Monaco Editor for writing a new test
However, it would be nice if we could edit a test inline inside APP
So when a test fails, I could quickly edit it, save it, and re-run without opening an editor

Code Editor

We need a code editor that could do small updates in tests from a web interface.

Use Scenario

  • I open a test in UI
  • I click "Source" tab
  • I have a text editor with a source code, so I could edit the code
  • When I save the updated code it will be transferred to backend
  • A backend will open a corresponding file, and update the test function with my changes
  • (implemented) File update will trigger UI to refresh the test source

Technical Implementation

  • Monaco Editor is used for as code editor
  • a test contains information of line and file where the source is
  • frontend sends line & file information to backend (alternatively, this info is taken from backend)
  • test file is opened
  • source code is analyzed with acron or babel parser (AST parsers)
  • inside AST we search for a function starting on a line we received
  • we find the line where this function ends
  • replace a function in a source code by lines with the one received from a frontend
  • we save a file

Implementation Details

  • This parsing things should happen in lib/model/editor_repository.js
  • See acron / babel-parser for more info on parsing

Important notes

Each test starts with Scenario() prefix. We should not lose it while we update a file:

Scenario('name of a test', (I) => {
  // this function MUST BE REPLACED
});

Unable to install @codecept/ui

What are you trying to achieve?

Install @codecept/ui

What do you get instead?

Provide console output if related.

npm i @codeceptjs/ui --save
npm WARN deprecated [email protected]: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm ERR! code ETARGET
npm ERR! notarget No matching version found for @babel/traverse@^7.9.6
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
npm ERR! notarget
npm ERR! notarget It was specified as a dependency of '@babel/helpers'
npm ERR! notarget

npm ERR! A complete log of this run can be found in:

When run som test in ui the node console shows this error:

What are you trying to achieve?

  • Provide a descriptive text that what you are trying to achieve with CodeceptUI.
  • Attach a screenshot should be more than welcome.
  • Provide a console output for frontend (open DevTools and copy or make a screenshot of last messages)
  • Provide output for backend (copy last mesage from terminal)

What do you get instead?

Provide console output if related.

# paste output here

Provide test source code if related

// paste test source code here

Environment info

  • Copy and paste your environment info by using npx codeceptjs info
// paste env info here

Pass in webSocket port by HTTP request

This simplifies changing websocket port, so we won't need to rebuild application to change websocket port.

So to change websocket port I could just run:

npx @codeceptjs/ui --wsPort=5555

codecept.runBootstrap is not a function

What are you trying to achieve?

  • Trying to start a server.

What do you get instead?

Getting error codecept.runBootstrap is not a function and it stucks after that.

  codepress:codeceptjs-factory Creating codeceptjs instance... {} +0ms
  codepress:codeceptjs-factory Using CodeceptJS config {
  output: './tests/e2e/output',
  helpers: {
    Puppeteer: {
      url: 'http://localhost:3000',
      show: true,
      waitForNavigation: 'networkidle0'
    },
    Mochawesome: { uniqueScreenshotNames: 'true' }
  },
  include: {},
  mocha: { reporterOptions: { reportDir: './tests/e2e/output' } },
  bootstrap: null,
  teardown: null,
  hooks: [],
  gherkin: {},
  plugins: { screenshotOnFail: { enabled: true } },
  tests: './tests/e2e/specs/web/*.spec.ts',
  stepByStepReport: { enabled: true },
  name: 'codecept-web',
  require: [ 'ts-node/register', 'should' ]
} +278ms
  codepress:codeceptjs-factory Loading helpers... +500ms
  codepress:realtime-reporter-helper init +0ms
codecept.runBootstrap is not a function

Environment info

  • Copy and paste your environment info by using npx codeceptjs info
 Environment information:-

codeceptVersion:  "3.0.0-beta.4"
nodeInfo:  12.18.0
osInfo:  macOS 10.15.5
cpuInfo:  (8) x64 Intel(R) Core(TM) i5-8257U CPU @ 1.40GHz
chromeInfo:  83.0.4103.116
edgeInfo:  Not Found
firefoxInfo:  Not Found
safariInfo:  13.1.1
helpers:  {
 "Puppeteer": {
  "url": "http://localhost:3000",
  "show": true,
  "waitForNavigation": "networkidle0"
 },
 "Mochawesome": {
  "uniqueScreenshotNames": "true"
 }
}
plugins:  {
 "screenshotOnFail": {
  "enabled": true
 }
}
***************************************
If you have questions ask them in our Slack: shorturl.at/cuKU8
Or ask them on our discussion board: https://codecept.discourse.group/
Please copy environment info when you report issues on GitHub: https://github.com/Codeception/CodeceptJS/issues
***************************************

Easy switch between headless/window mode

It would be nice if we could switch between Headless & Headful mode with 1 click

This icon shows that tests are running in Headless mode:

image

This is how this settings can be changed

image

It would be nice if we could improve UI to make switch simpler.

Expected behavior:

  • when I hover on Ghost icon I see (Headless mode)
  • when I click on it I switch to another mode.

(there are Headless & Window mode)

The default mode is set at config

Chromium getting disconnected

Issue Description:

Cloned master and was trying to run example test case in the UI, but it is giving error
"Navigation failed because browser has disconnected"

Console output is:

Screenshot 2020-03-03 at 4 46 58 PM

UI Output Screenshot:

Screenshot 2020-03-03 at 4 38 50 PM

Unhandled rejection when running `npx codecept-ui`

What are you trying to achieve?

Start CodeceptUi

What do you get instead?

~/tmp/codecept $ npx codecept-ui                  
Unhandled rejection

Environment info

 Environment information:-

codeceptVersion:  "2.6.8"
nodeInfo:  10.19.0
osInfo:  Linux 5.4 Ubuntu 20.04.1 LTS (Focal Fossa)
cpuInfo:  (8) x64 Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
chromeInfo:  84.0.4147.105
edgeInfo:  "N/A"
firefoxInfo:  79.0
safariInfo:  N/A
helpers:  {
 "Puppeteer": {
  "url": "github.com",
  "show": true,
  "windowSize": "1200x900"
 }
}
plugins:  {
 "screenshotOnFail": {
  "enabled": true
 },
 "retryFailedStep": {
  "enabled": true
 },
 "allure": {}
}

Refactor Menu

CodeceptUI window is shown in two modes

  • Full width - mode (server, or maximized app)
  • Small size - for application mode, mobile, etc

In small size mode not all menu elements are shown. For instance, the Settings button is missing. We need to refactor Menu component to work for small and wide screens.

Small size (no Settings button)

image

Full menu (with Settings)

image

We may need more optoions in menu with PageObjects, Config, etc

[Feat] Store New Test in Local Storage

What are you trying to achieve?

  • When user write a new test from UI, test commands should be saved in local storage
  • When user open new test again test commands should be fetched from local storage

Electron build

It would be nice if we could optionally run codecept-ui as Electron app.

Pros:

  • easy to start and manage this app
  • more user friendly

Cons:

  • dependency on electron (maybe have it optional)

Inside Electron app there must be two modes:

  • full width - in this mode you see steps on the left and screenshots on the right. Useful when reviewing already executed tests or running tests in headless mode
  • 1/3 width - in this mode the tests are running inside the browser window, so it is easy to have live preview in a real browser for tests.

So unlike our web app, electron app should also control its size and position (palce itself into top left corner and adjust size to modes)

Enhance Interactive Pause Based On Action Type

What are you trying to achieve?

  • Interactive Pause input box show common actions used in E2E Test
  • On user click, it should show related commands
  • Also include icons and colors to make it user friendly

What do you get instead?

  • Currently, it's a simple placeholder
  • User needs to type by themselves
  • Not user friendly for new users

Enhance UI Of Documentation Shown In Interactive Pause

What are you trying to achieve?

  • On selecting commands from interactive pause, documentation for the same command should be visible to user if it exists
  • Documentation needs to present below Interactive pause
  • Toggle feature For User To choose if they want to see documentation or not
  • Implement Proper markdown for code samples present in documentation.

Electron duplication in dependencies

Houston, we have different electron versions in dependencies:

warning package.json: "dependencies" has dependency "electron" with range "^6.0.0" that collides with a dependency in "devDependencies" of the same name with version "^6.1.11"

I can't use with "ChaiWrapper"

What do you get instead?

AssertionError [ERR_ASSERTION]: helper is required

AssertionError [ERR_ASSERTION]: helper is required
  ✖ Verify that customer 
-- FAILURES:
  1) Regression: Link to personal area
     helper is required
  
  Scenario Steps:
  - I.amOnPage("https://google.com") at Object.goToHomePage (pages/welcome_page/home_page.js:47:7)
  FAIL  | 0 passed, 1 failed   // 10s

Environment info

codeceptVersion:  "2.6.0"
nodeInfo:  12.14.1
osInfo:  macOS 10.15.3
cpuInfo:  (4) x64 Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
chromeInfo:  80.0.3987.149
helpers: {
      ...,
        ChaiWrapper: {
            require: './node_modules/codeceptjs-chai',
        },
    },

https://www.npmjs.com/package/codeceptjs-chai

Cannot set property 'isRunning' of null

    "@codeceptjs/ui": "0.2.5",
    "codeceptjs": "2.5.0",
    "playwright": "0.11.1",

Log:

❯ npx codecept-ui --debug --verbose
CodeceptJS config: {
  tests: './specs/*.spec.ts',
  output: './build',
  require: [ 'ts-node/register' ],
  helpers: {
    Playwright: { url: 'http://localhost', show: false, browser: 'chromium' }
  },
  include: { I: './steps.ts' },
  name: 'clinic-acceptance',
  plugins: {
    retryFailedStep: { enabled: true },
    screenshotOnFail: { enabled: true }
  }
}
Bootstrap executed, tests can be launched
Open http://localhost:3001 in your web browser!
CodeceptJS config: {
  tests: './specs/*.spec.ts',
  output: './build',
  require: [ 'ts-node/register' ],
  helpers: {
    Playwright: { url: 'http://localhost', show: false, browser: 'chromium' }
  },
  include: { I: './steps.ts' },
  name: 'clinic-acceptance',
  plugins: {
    retryFailedStep: { enabled: true },
    screenshotOnFail: { enabled: true }
  }
}
CodeceptJS v2.5.0
Using test root "/Users/visortelle/vcs/heal-c-2/modules/clinic/test/acceptance"
Helpers: Playwright, RealtimeReporterHelper, ConsoleRecorderHelper, SingleSessionHelper
Plugins: screenshotOnFail, retryFailedStep

test github --
    [1] Starting recording promises
    Emitted | suite.before ([object Object])
 › [Session] Starting singleton browser session
    [1] Error | TypeError: Cannot read property 'options' of null
    Emitted | test.failed ([object Object])
  ✖ "before all" hook: codeceptjs.beforeSuite for "test something at github" in 387ms
    [1] Error | TypeError: Cannot read property 'options' of null
TypeError: Cannot read property 'options' of null
    Emitted | suite.after ([object Object])
    [1] Error | TypeError: Cannot set property 'isRunning' of null
    Emitted | test.failed ([object Object])
  ✖ "after all" hook: codeceptjs.afterSuite for "test something at github" in 1ms
    [1] Error | TypeError: Cannot set property 'isRunning' of null
TypeError: Cannot set property 'isRunning' of null

-- FAILURES:

  1) test github
       "before all" hook: codeceptjs.beforeSuite for "test something at github":
     Cannot read property 'options' of null
  ypeError: Cannot read property 'options' of null
      at SingleSessionHelper._beforeSuite (node_modules/@codeceptjs/ui/lib/codeceptjs/single-session.helper.js:36:17)
      at /Users/visortelle/vcs/heal-c-2/modules/clinic/test/acceptance/node_modules/codeceptjs/lib/listener/helpers.js:27:69

  2) test github
       "after all" hook: codeceptjs.afterSuite for "test something at github":
     Cannot set property 'isRunning' of null
  ypeError: Cannot set property 'isRunning' of null
      at SingleSessionHelper._afterSuite (node_modules/@codeceptjs/ui/lib/codeceptjs/single-session.helper.js:45:27)
      at /Users/visortelle/vcs/heal-c-2/modules/clinic/test/acceptance/node_modules/codeceptjs/lib/listener/helpers.js:27:69
      at processTicksAndRejections (internal/process/task_queues.js:93:5)


  FAIL  | 0 passed, 2 failed   // 391ms
    Emitted | global.result ([object Object])
    Emitted | global.after ([object Object])

Error is in: node_modules/@codeceptjs/ui/lib/codeceptjs/single-session.helper.js:45:27

The same test ends with success with codeceptjs run.

Start BE with examples gives error

I got this error when trying to start BE with examples

Thanhs-MacBook-Pro:ui thanhnguyen$ npm run exapmles

> [email protected] exapmles /Users/thanhnguyen/Desktop/ui
> cd node_modules/@codeceptjs/examples && ../bin/codepress.js

sh: ../bin/codepress.js: No such file or directory
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! [email protected] exapmles: `cd node_modules/@codeceptjs/examples && ../bin/codepress.js`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the [email protected] exapmles script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/thanhnguyen/.npm/_logs/2019-11-29T12_53_59_548Z-debug.log

/api/actions: HTTP 500 (missing codeceptjs/docs/webapi/ directory)

What are you trying to achieve?

On the home page, click a test scenario to execute it.

What do you get instead?

Though the test scenario passes, I see the following error in the console, related to the route /api/actions:

Error: ENOENT: no such file or directory, scandir 'X:\codeceptjs-ui-demo\node_modules\codeceptjs\docs\webapi'
    at Object.readdirSync (fs.js:955:3)
    at module.exports (X:\codeceptjs-ui-demo\node_modules\@codeceptjs\ui\lib\api\list-actions.js:14:6)
    at Layer.handle [as handle_request] (X:\codeceptjs-ui-demo\node_modules\express\lib\router\layer.js:95:5)
    at next (X:\codeceptjs-ui-demo\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (X:\codeceptjs-ui-demo\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (X:\codeceptjs-ui-demo\node_modules\express\lib\router\layer.js:95:5)
    at X:\codeceptjs-ui-demo\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (X:\codeceptjs-ui-demo\node_modules\express\lib\router\index.js:335:12)
    at next (X:\codeceptjs-ui-demo\node_modules\express\lib\router\index.js:275:10)
    at Function.handle (X:\codeceptjs-ui-demo\node_modules\express\lib\router\index.js:174:3)

Environment info

codeceptVersion:  "3.0.0-beta.4"
nodeInfo:  12.18.3
osInfo:  Windows 10 10.0.18363
cpuInfo:  (4) x64 Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz
chromeInfo:  85.0.4183.83
edgeInfo:  Spartan (44.18362.449.0)
firefoxInfo:  N/A
safariInfo:  N/A
helpers:  {
 "WebDriver": {
  "url": "http://localhost",
  "browser": "chrome"
 }
}
plugins:  {
 "screenshotOnFail": {
  "enabled": true
 },
 "retryFailedStep": {
  "enabled": true
 },
 "wdio": {
  "enabled": true,
  "services": [
   "selenium-standalone"
  ]
 }
}

ERROR: {} TypeError: done is not a function at bootstrap

What are you trying to achieve?

I am trying to run codeceptjs with npx codecept-ui
the issue I am getting error with
bootstrap: async function (done) {

I think the best option to do new things in codeceptjs is to have complex e2e and run eatch new codeceptjs things first on it and then publish...

Error when executing `npm run examples`

I got this error when trying to perform npm run examples

Thanhs-MacBook-Pro:ui thanhnguyen$ npm run examples

> @codeceptjs/[email protected] examples /Users/thanhnguyen/Desktop/ui
> cd node_modules/@codeceptjs/examples && ../../../bin/codecept-ui.js

/Users/thanhnguyen/Desktop/ui/lib/utils/mkdir.js:8
      throw e;
      ^

Error: ENOENT: no such file or directory, mkdir '/Users/thanhnguyen/Desktop/ui/node_modules/@codeceptjs/examples/output/.ui'
    at Object.mkdirSync (fs.js:764:3)
    at mkdir (/Users/thanhnguyen/Desktop/ui/lib/utils/mkdir.js:5:8)
    at Object.<anonymous> (/Users/thanhnguyen/Desktop/ui/lib/model/scenario-status-repository.js:7:1)
    at Module._compile (internal/modules/cjs/loader.js:774:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10)
    at Module.load (internal/modules/cjs/loader.js:641:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Module.require (internal/modules/cjs/loader.js:681:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (/Users/thanhnguyen/Desktop/ui/lib/codeceptjs/realtime-reporter.helper.js:3:34) {
  errno: -2,
  syscall: 'mkdir',
  code: 'ENOENT',
  path: '/Users/thanhnguyen/Desktop/ui/node_modules/@codeceptjs/examples/output/.ui'
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @codeceptjs/[email protected] examples: `cd node_modules/@codeceptjs/examples && ../../../bin/codecept-ui.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the @codeceptjs/[email protected] examples script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/thanhnguyen/.npm/_logs/2019-12-03T16_39_52_154Z-debug.log

How to change default port (3000)

What are you trying to achieve?

Hi !

Thanks for this project, it looks very promising 🥇

I try to change default port because our app run on port 3000. I do not find a way in code source to do it easily.

What do you get instead?

Impossible to execute because port 3000 is already taken.

The status of the Run button doesn't change after the tests are completed when using not default port for ui application.

see also here

What are you trying to achieve?

  • Provide a descriptive text that what you are trying to achieve with CodeceptUI.

Be sure by the UI of the tests are completed.

  • Attach a screenshot should be more than welcome.

I execute codecept-ui by command in package.json:
port=3100 TS_NODE_PROJECT='./codecept/tsconfig.json' DEVHOSTNAME=$(hostname -f) concurrently 'npx codecept-ui --verbose' 'npx open-cli http://$(hostname -f):$((port + 1))'

video

  • Provide a console output for frontend (open DevTools and copy or make a screenshot of last messages)
HERE IS CONSOLE OUTPUT, click here

console output

DevTools failed to load SourceMap: Could not load content for chrome-extension://gighmmpiobklfepjocnamgkkbiglidom/include.preload.js.map: HTTP error: status code 404, net::ERR_UNKNOWN_URL_SCHEME
vue-socketio.js:10 Vue-Socket.io: Received connection string 
vue-socketio.js:10 Vue-Socket.io: Vuex adapter enabled 
vue-socketio.js:10 Vue-Socket.io: Vuex socket mutations enabled 
vue-socketio.js:10 Vue-Socket.io: Vuex socket actions enabled 
vue-socketio.js:10 Vue-Socket.io: Vue-Socket.io plugin enabled 
vue-socketio.js:8 GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=N88dD2z net::ERR_CONNECTION_REFUSED
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
p @ vue-socketio.js:8
p @ vue-socketio.js:8
l @ vue-socketio.js:8
value @ vue-socketio.js:10
e @ vue-socketio.js:10
56d7 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
0 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
s @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
DevTools failed to load SourceMap: Could not load content for chrome-extension://gighmmpiobklfepjocnamgkkbiglidom/include.postload.js.map: HTTP error: status code 404, net::ERR_UNKNOWN_URL_SCHEME
vue-socketio.js:8 GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=N88dDKt net::ERR_CONNECTION_REFUSED
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
p.maybeReconnectOnOpen @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
p @ vue-socketio.js:8
p @ vue-socketio.js:8
l @ vue-socketio.js:8
value @ vue-socketio.js:10
e @ vue-socketio.js:10
56d7 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
0 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
s @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
vue-socketio.js:8 GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=N88dDrB net::ERR_CONNECTION_REFUSED
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
p.maybeReconnectOnOpen @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
p @ vue-socketio.js:8
p @ vue-socketio.js:8
l @ vue-socketio.js:8
value @ vue-socketio.js:10
e @ vue-socketio.js:10
56d7 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
0 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
s @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
vue-socketio.js:8 GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=N88dF3V net::ERR_CONNECTION_REFUSED
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
p.maybeReconnectOnOpen @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
p @ vue-socketio.js:8
p @ vue-socketio.js:8
l @ vue-socketio.js:8
value @ vue-socketio.js:10
e @ vue-socketio.js:10
56d7 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
0 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
s @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
vue-socketio.js:8 GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=N88dGI2 net::ERR_CONNECTION_REFUSED
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
p.maybeReconnectOnOpen @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
p @ vue-socketio.js:8
p @ vue-socketio.js:8
l @ vue-socketio.js:8
value @ vue-socketio.js:10
e @ vue-socketio.js:10
56d7 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
0 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
s @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
vue-socketio.js:8 GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=N88dHX3 net::ERR_CONNECTION_REFUSED
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
p.maybeReconnectOnOpen @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
p @ vue-socketio.js:8
p @ vue-socketio.js:8
l @ vue-socketio.js:8
value @ vue-socketio.js:10
e @ vue-socketio.js:10
56d7 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
0 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
s @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
vue-socketio.js:8 GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=N88dIm9 net::ERR_CONNECTION_REFUSED
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
p.maybeReconnectOnOpen @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
p @ vue-socketio.js:8
p @ vue-socketio.js:8
l @ vue-socketio.js:8
value @ vue-socketio.js:10
e @ vue-socketio.js:10
56d7 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
0 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
s @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
vue-socketio.js:8 GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=N88dJ-S net::ERR_CONNECTION_REFUSED
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
p.maybeReconnectOnOpen @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
p @ vue-socketio.js:8
p @ vue-socketio.js:8
l @ vue-socketio.js:8
value @ vue-socketio.js:10
e @ vue-socketio.js:10
56d7 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
0 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
s @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
vue-socketio.js:8 GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=N88dLD5 net::ERR_CONNECTION_REFUSED
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
p.maybeReconnectOnOpen @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
p @ vue-socketio.js:8
p @ vue-socketio.js:8
l @ vue-socketio.js:8
value @ vue-socketio.js:10
e @ vue-socketio.js:10
56d7 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
0 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
s @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
vue-socketio.js:8 [Violation] 'setTimeout' handler took 73ms
vue-socketio.js:8 GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=N88dMRk net::ERR_CONNECTION_REFUSED
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
p.reconnect @ vue-socketio.js:8
p.maybeReconnectOnOpen @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
u.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
o.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
i.emit @ ga.js:14
d.onError @ vue-socketio.js:8
(anonymous) @ vue-socketio.js:8
setTimeout (async)
hasXDR.t.onreadystatechange @ vue-socketio.js:8
XMLHttpRequest.send (async)
d.create @ vue-socketio.js:8
d @ vue-socketio.js:8
u.request @ vue-socketio.js:8
u.doPoll @ vue-socketio.js:8
u.poll @ vue-socketio.js:8
u.doOpen @ vue-socketio.js:8
o.open @ vue-socketio.js:8
u.open @ vue-socketio.js:8
u @ vue-socketio.js:8
u @ vue-socketio.js:8
p.open.p.connect @ vue-socketio.js:8
p @ vue-socketio.js:8
p @ vue-socketio.js:8
l @ vue-socketio.js:8
value @ vue-socketio.js:10
e @ vue-socketio.js:10
56d7 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
0 @ app.f33a63cb.js:1
o @ app.f33a63cb.js:1
s @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
(anonymous) @ app.f33a63cb.js:1
  • Provide output for backend (copy last mesage from terminal)

What do you get instead?

Provide console output if related.

[0]     I see "Incorrect username or password.", ".flash-error"
[0]     Emitted | step.passed (I see "Incorrect username or password.", ".flash-error")
[0]     Emitted | step.finish (I see "Incorrect username or password.", ".flash-error")
[0]     Emitted | test.passed ([object Object])
[0]     Emitted | test.finish ([object Object])
[0]   ✔ OK in 4724ms
[0] 
[0]     Emitted | test.after ([object Object])
[0]  › [Session] cleaning cookies and localStorage
[0]     Emitted | suite.after ([object Object])
[0] 
[0]   OK  | 1 passed   // 7s
[0]     Emitted | global.result ([object Object])
[0]     Emitted | global.after ([object Object])

Provide test source code if related

Feature('first');

Scenario('test something', async ({ I }) => {
  I.amOnPage('https://github.com/login');
  I.see('Sign in to GitHub', 'h1');

  I.fillField('Username or email address', '[email protected]');
  I.fillField('Password', '123456');
  I.click('Sign in');
  I.see('Incorrect username or password.', '.flash-error');
});

Environment info

  • Copy and paste your environment info by using npx codeceptjs info
npx codeceptjs info

 Environment information:-

codeceptVersion:  "3.0.0-beta.2"
nodeInfo:  14.2.0
osInfo:  Linux 4.19 Debian GNU/Linux 10 (buster) 10 (buster)
cpuInfo:  (4) x64 Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz
chromeInfo:  81.0.4044.138
edgeInfo:  N/A
firefoxInfo:  68.8.0esr
safariInfo:  N/A
helpers:  {
 "Playwright": {
  "url": "http://github.com",
  "show": true,
  "browser": "chromium",
  "waitForTimeout": 5000,
  "waitForNavigation": "load",
  "waitForAction": 500
 }
}
plugins:  {
 "screenshotOnFail": {
  "enabled": true
 },
 "retryFailedStep": {
  "enabled": true
 }
}
***************************************
If you have questions ask them in our Slack: shorturl.at/cuKU8
Or ask them on our discussion board: https://codecept.discourse.group/
Please copy environment info when you report issues on GitHub: https://github.com/Codeception/CodeceptJS/issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.