How do you programmatically interact with Angular/NGRX from Cypress? The cypress docs seem to refer only to React: https://www.cypress.io/blog/2018/11/14/testing-redux-store/
// expose store when run in Cypress
if (window.Cypress) {
window.store = store
}
cy
.window()
.its('store')
.invoke('dispatch', { type: 'ADD_TODO', text: 'Test dispatch' })
// check if the app has updated its UI
This would be the React approach; so what about Angular?
In Angular it is almost the same. In your AppComponent
or wherever you have the store you can do something like:
// Expose the store
@Component({...})
export class AppComponent {
constructor(private store: Store<AppState>){
if(window.Cypress){
window.store = this.store;
}
}
}
You can then create your own Cypress utility:
function dispatchAction(action: Action): Cypress.Chainable<any> {
return cy.window().then(w => {
const store = w.store;
store.dispatch(action);
});
}
And finally you can use it in a Cypress test:
dispatchAction(new MyAction()).then(() => {
// Assert the side effect of your action
// ...
// cy.get('.name').should('exist');
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With