Home > Blockchain >  Cypress expect(false).to.equal(true) is true and Cypress skips cy.wait?
Cypress expect(false).to.equal(true) is true and Cypress skips cy.wait?

Time:01-12

I am really confused right now and dont know what to do.

Cypress seems to be fine with an obvious failed test and furthermore doesn't execute the cy.wait(10000); as you can see in the time stamp in the top right corner of the image.

I have build a Cypress component test in an nx angular project. This is the test and the output, what am i doing wrong?

The after All part is there because of a plugin, same behaviour without it.

/// <reference types="cypress" />

import { MatDialogRef } from "@angular/material/dialog";
import { CreateDiscussionPopUpComponent } from "./create-discussion-pop-up.component";
import { NO_ERRORS_SCHEMA } from "@angular/core";
import { MatInputModule } from "@angular/material/input";
import { SharedUtilitiesModule, MaterialModule } from "@xxx/shared-utilities";
import {
  TranslateLoader,
  TranslateModule,
  TranslateService,
} from "@ngx-translate/core";
import {
  TranslateLoaderMock,
  TranslateServiceTestProvider,
} from "@xxx/shared-services/mocks";
import { ComponentFixture, TestBed } from "@angular/core/testing";
import { FlexLayoutModule } from "@angular/flex-layout";
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";

const config = {
  imports: [
    TranslateModule.forRoot({
      loader: { provide: TranslateLoader, useClass: TranslateLoaderMock },
    }),
    FormsModule,
    BrowserAnimationsModule,
    ReactiveFormsModule,
    SharedUtilitiesModule,
    MaterialModule,
    MatInputModule,
    FlexLayoutModule,
  ],
  declarations: [CreateDiscussionPopUpComponent],
  providers: [
    {
      provide: MatDialogRef,
      useValue: {},
    },
    TranslateServiceTestProvider,
  ],
  schemas: [NO_ERRORS_SCHEMA],
};

describe("ISO-Akzeptanz-Test der CreateDiscussionPopUpComponent-Komponente", () => {
  let component: CreateDiscussionPopUpComponent;
  let fixture: ComponentFixture<CreateDiscussionPopUpComponent>;

  beforeEach((done) => {
    cy.viewport(750, 300);
    cy.mount(CreateDiscussionPopUpComponent, config).then((res) => {
      component = res.component;
      fixture = res.fixture;
      console.log(component   " "   fixture);

      const translateService = TestBed.inject(TranslateService);
      translateService.use("de");
      done();
    });
  });
  
  describe("ISO 171", () => {
    it("8.1.3", () => {
      cy.wait(10000);
      expect(false).to.equal(true);
    });

  });
});

enter image description here

Thanks in advance for any help! ^^

CodePudding user response:

Cypress commands are asynchronous. cy.wait() does not perform a wait, Cypress just enqueues this command to be executed later. That's why your assertion runs before any delay is performed.

CodePudding user response:

You will be able to perform the wait and the expect by using Cypress commands.

Either wrap the expect in a .then() callback, or convert it to a Cypress .should()

describe("ISO 171", () => {
  it("8.1.3", () => {
    cy.wait(10_000);
    cy.then(() => expect(false).to.equal(true))
  }) 

or

describe("ISO 171", () => {
  it("8.1.3", () => {
    cy.wait(10_000);
    cy.wrap(false).should(`equal`, true)
  }) 
  • Related