chai-http icon indicating copy to clipboard operation
chai-http copied to clipboard

chai-http is interfering with chai-dom

Open PhilippMi opened this issue 7 years ago • 2 comments

I created a little test to demonstrate the issue:

const chai = require('chai');
const chaiHttp = require('chai-http');
const chaiDom = require('chai-dom');
const jsdom = require('jsdom');

const expect = chai.expect;

before(function() {
  //chai.use(chaiHttp);
  chai.use(chaiDom);
});

describe('chai-http', function() {

  it('should not interfere with chai-dom', function() {
    
  	return new Promise((resolve, reject) => {
        jsdom.env({
            html: "<html><body>This is the content</body></html>",
            done: function (errs, window) {
            	if(errs) {
            		return resject(errs);
            	}
                global.window = window;
                global.NodeList = window.NodeList;
                global.HTMLElement = window.HTMLElement;
                resolve();
            }
        });
    }).then(() => {
    	expect(window.document.querySelector('body')).to.have.text('This is the content');
    });

  });

});

When I execute this code, everything works as expected and the test passes. But when I uncomment chai.use(chaiHttp), I get the following error:

expected <body>This is the content</body> to have headers or getHeader method

It seems like chai-http is interfering here with the chai-dom assertions.

I created a little repository where you can try my test code: https://github.com/PhilippMi/chai-http-dom-test

PhilippMi avatar Apr 18 '17 14:04 PhilippMi

It also interferes with chai-html. I've had success putting chai.use(chaiHttp) in a before block, but 1. that may just work because of the order in which my tests are running, and 2. that doesn't really help you if you need to use both in the same test.

I'm not sure that this will ever be "fixed" because using any two plugins together can cause this.

stevenhair avatar Feb 11 '18 20:02 stevenhair

Hey @PhilippMi thanks for the issue!

Thanks @stevenhair for the extra comment.

We have some plans to fix this kind of thing long term, but yeah this wont be fixed any time soon. Follow https://github.com/chaijs/chai/issues/585 which hopes to address this (and many other issues) in the chai ecosystem

keithamus avatar Feb 11 '18 22:02 keithamus