Bird
Raised Fist0
Cypresstesting~10 mins

Why plugins extend Cypress capabilities - Test Your Understanding

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import a Cypress plugin.

Cypress
const plugin = require('[1]');
Drag options to blanks, or click blank then click option'
Acypress-plugin
Bcypress/plugins
C@cypress/plugin
Dcypress-plugin-sample
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect or non-existent plugin paths.
2fill in blank
medium

Complete the code to register a plugin in Cypress.

Cypress
module.exports = (on, config) => { on('[1]', () => { /* plugin code */ }); };
Drag options to blanks, or click blank then click option'
Awindow:before:load
Bbefore:run
Ctask
Dafter:spec
Attempts:
3 left
💡 Hint
Common Mistakes
Using events that are not for plugin tasks.
3fill in blank
hard

Fix the error in the plugin registration code by completing the blank.

Cypress
module.exports = (on, config) => { on('task', [1]); };
Drag options to blanks, or click blank then click option'
A{ myTask: () => 'done' }
B() => console.log('task')
C() => { return null; }
Dfunction() { console.log('task'); }
Attempts:
3 left
💡 Hint
Common Mistakes
Passing a function instead of an object for tasks.
4fill in blank
hard

Fill both blanks to correctly export a plugin that logs a message before tests run.

Cypress
module.exports = (on, config) => { on('[1]', () => { console.log('[2]'); }); };
Drag options to blanks, or click blank then click option'
Abefore:run
Btask
CTests are starting
DPlugin loaded
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong event names or unclear log messages.
5fill in blank
hard

Fill both blanks to create a plugin that defines a custom task returning the current time.

Cypress
module.exports = (on, config) => { on('[1]', { [2]: () => new Date().toISOString() }); };
Drag options to blanks, or click blank then click option'
Atask
BgetCurrentTime
CcurrentTime
DlogTime
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect event names or unclear task names.

Practice

(1/5)
1. What is the main reason to use plugins in Cypress?
easy
A. To add extra features that work outside the browser
B. To write test cases faster inside the browser
C. To change the browser's user interface
D. To automatically fix test failures

Solution

  1. Step 1: Understand Cypress plugin purpose

    Plugins let Cypress do things that normal browser tests cannot, like file system access or custom tasks.
  2. Step 2: Compare options with plugin use

    Only To add extra features that work outside the browser correctly describes extending Cypress outside the browser environment.
  3. Final Answer:

    To add extra features that work outside the browser -> Option A
  4. Quick Check:

    Plugins extend Cypress beyond browser limits = C [OK]
Hint: Plugins add power outside browser, not inside tests [OK]
Common Mistakes:
  • Thinking plugins only speed up test writing
  • Confusing plugins with UI changes
  • Believing plugins fix test failures automatically
2. Which file is used to write Cypress plugins?
easy
A. cypress/support/commands.js
B. cypress/plugins/index.js
C. cypress/integration/spec.js
D. cypress.json

Solution

  1. Step 1: Identify plugin file location

    Cypress plugins are written in the cypress/plugins/index.js file as per Cypress structure.
  2. Step 2: Eliminate other files

    Other files are for commands, tests, or config, not plugins.
  3. Final Answer:

    cypress/plugins/index.js -> Option B
  4. Quick Check:

    Plugins live in plugins/index.js file = A [OK]
Hint: Plugins always go in plugins/index.js file [OK]
Common Mistakes:
  • Choosing support or integration files for plugins
  • Confusing config file with plugin file
  • Not knowing Cypress folder structure
3. What will this plugin code do?
module.exports = (on, config) => {
  on('task', {
    log(message) {
      console.log(message)
      return null
    }
  })
}
medium
A. Creates a new browser event listener
B. Runs a test inside the browser console
C. Defines a task named 'log' that prints messages to the console
D. Overrides Cypress default logging behavior

Solution

  1. Step 1: Analyze the plugin code

    The code uses on('task', {...}) to define a custom task named 'log' that prints a message to the Node console.
  2. Step 2: Understand task purpose

    This task can be called from tests to log messages outside the browser.
  3. Final Answer:

    Defines a task named 'log' that prints messages to the console -> Option C
  4. Quick Check:

    Task 'log' prints messages = D [OK]
Hint: Tasks run in Node, not browser console [OK]
Common Mistakes:
  • Thinking task runs inside browser
  • Confusing task with event listener
  • Assuming it overrides default logs
4. Identify the error in this plugin code:
module.exports = (on, config) => {
  on('task', {
    readFile(path) {
      return fs.readFileSync(path, 'utf8')
    }
  })
}
medium
A. Missing import of 'fs' module
B. Wrong event name instead of 'task'
C. Incorrect return type for readFile
D. Plugin file should be JSON, not JS

Solution

  1. Step 1: Check code dependencies

    The code uses fs.readFileSync but does not import the 'fs' module, causing a runtime error.
  2. Step 2: Verify other parts

    The event name 'task' is correct, return type is valid, and plugin files are JavaScript files.
  3. Final Answer:

    Missing import of 'fs' module -> Option A
  4. Quick Check:

    Using fs without import causes error = B [OK]
Hint: Always import Node modules before use in plugins [OK]
Common Mistakes:
  • Assuming event name is wrong
  • Thinking return type must be a promise
  • Believing plugin files must be JSON
5. You want to create a plugin that reads a JSON file and returns its content as an object to your test. Which plugin code correctly does this?
const fs = require('fs')

module.exports = (on, config) => {
  on('task', {
    readJson(path) {
      const content = fs.readFileSync(path, 'utf8')
      return JSON.parse(content)
    }
  })
}
hard
A. This code needs to use asynchronous fs.readFile instead
B. This code will fail because JSON.parse cannot be used in plugins
C. This code should return content without parsing
D. This code correctly reads and parses JSON file content

Solution

  1. Step 1: Check file reading method

    The code uses fs.readFileSync to read the file synchronously, which is valid in plugins.
  2. Step 2: Verify JSON parsing

    It correctly parses the JSON string to an object using JSON.parse and returns it.
  3. Final Answer:

    This code correctly reads and parses JSON file content -> Option D
  4. Quick Check:

    Sync read + JSON.parse returns object = A [OK]
Hint: Use sync read and JSON.parse in plugins for JSON files [OK]
Common Mistakes:
  • Thinking JSON.parse is disallowed in plugins
  • Believing async read is required
  • Returning raw string instead of parsed object
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard