Skip to content

Jahia/jahia-cypress

Repository files navigation

Jahia logo

@jahia/cypress

Commands

.apollo()

.apolloClient()

.runProvisioningScript()

.executeGroovy()

.login()

.logout()

.repeatUntil()

Page / component objects

In Page Object Model, a set of object is provided to handle known and reused web elements. These page objects provide method to handle interactions with these web elements. Web elements can be simple HTML elements, more complex UI components or full pages.

This framework does not come with predefined page objects, as they should be provided by the modules which define them. TODO: Moonstone page object are defined here, but could be moved to moonstone

Implementation

Components

Page object representing a component extends baseComponent. Creating a page object will enqueue a command looking for the corresponding DOM element. An alias to this element will be stored in the object.

Page object can provide accessors to other page object, and methods that will enqueue other cypress commands and assertions.

moonstone

Pages

Page object representing an HTML page extends basePage. They can provide a static visit() method to open the page, and returns an instance of the page object. Constructor can initialize components that are present in the page. This will assert that these components are present, and make them available for the tests.

jcontent.md

Sample usage

const primaryNav = new PrimaryNav()  // Look for primary nav elements 
primaryNav.listItems().expect('...') // Check primary nav content
primaryNav.select('jcontent')        // Select the corresponding item and click on it
let jcontent = JContent.visit("digitall", "en", "pages");
jcontent.select('content-folders')
const m = jcontent.getTable().getRow(1).contextMenu()
m.select('edit')

Configure

Add @jahia/cypress to your project.

Add cypress commands and support : in support/index.js, adds :

require('@jahia/cypress/dist/support/registerSupport').registerSupport()

Add typings in your tsconfig.json :

{
  "types": [
    "@jahia/cypress"
  ]
}

This project provides a plugin for settings environment variable based on system env ( JAHIA_URL and SUPER_USER_PASSWORD )

Set up your plugins: in plugins/index.js, calls the module in @jahia/cypress/dist/plugins/registerPlugins :

module.exports = (on, config) => {
    require('@jahia/cypress/dist/plugins/registerPlugins').registerPlugins(on, config)
    
    // register other plugins
    
    return config;
};

Open-Source

This is an Open-Source codebase, you can find more details about Open-Source @ Jahia in this repository