Cypress testing pseudo CSS class :before

后端 未结 4 1272
我在风中等你
我在风中等你 2021-02-15 09:50

Is there a way in which I can test the content of the pseudo CSS class for :before on my element with Cypress?

I have seen links documenting:

4条回答
  •  深忆病人
    2021-02-15 10:01

    There's a way to assert on the CSS properties of pseudo-elements, although it's not as simple as just using a Cypress command.

    1. Use cy.get() to get a reference to the element.
    2. Read the Window object off of the element, and then invoke Window.getComputedStyle(), which can read the computed CSS of pseudo selectors.
    3. Use getPropertyValue on the returned CSS declaration to read the value of the content property.
    4. Assert on it.

    Here's an example that works on the code posted in the OP:

    cy.get('.myClass')
    .then($els => {
      // get Window reference from element
      const win = $els[0].ownerDocument.defaultView
      // use getComputedStyle to read the pseudo selector
      const before = win.getComputedStyle($els[0], 'before')
      // read the value of the `content` CSS property
      const contentValue = before.getPropertyValue('content')
      // the returned value will have double quotes around it, but this is correct
      expect(contentValue).to.eq('"foo-"')
    })
    

提交回复
热议问题