From 65a8bafd24bc07a3f7ca924a508c8e3cff5e8d75 Mon Sep 17 00:00:00 2001 From: KHeo Date: Fri, 1 Nov 2019 12:47:32 +0900 Subject: [PATCH 1/7] Fixed null JSON file error. --- .../driver/test/cypress/fixtures/jquery.html | 7 ++++++ .../driver/test/cypress/fixtures/null.json | 1 + .../driver/test/cypress/fixtures/valid.json | 6 +++++ .../integration/commands/xhr_spec.coffee | 23 +++++++++++++++++++ packages/server/lib/controllers/xhrs.coffee | 5 ++++ 5 files changed, 42 insertions(+) create mode 100644 packages/driver/test/cypress/fixtures/null.json create mode 100644 packages/driver/test/cypress/fixtures/valid.json diff --git a/packages/driver/test/cypress/fixtures/jquery.html b/packages/driver/test/cypress/fixtures/jquery.html index ce1ad70d7f66..cf9ab2bc04cc 100644 --- a/packages/driver/test/cypress/fixtures/jquery.html +++ b/packages/driver/test/cypress/fixtures/jquery.html @@ -16,5 +16,12 @@
Nested Find
+ + diff --git a/packages/driver/test/cypress/fixtures/null.json b/packages/driver/test/cypress/fixtures/null.json new file mode 100644 index 000000000000..ec747fa47ddb --- /dev/null +++ b/packages/driver/test/cypress/fixtures/null.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/packages/driver/test/cypress/fixtures/valid.json b/packages/driver/test/cypress/fixtures/valid.json new file mode 100644 index 000000000000..00ba50b5f555 --- /dev/null +++ b/packages/driver/test/cypress/fixtures/valid.json @@ -0,0 +1,6 @@ +{ + "foo": 1, + "bar": { + "baz": "cypress" + } +} \ No newline at end of file diff --git a/packages/driver/test/cypress/integration/commands/xhr_spec.coffee b/packages/driver/test/cypress/integration/commands/xhr_spec.coffee index e91527ac5119..166fb3c44211 100644 --- a/packages/driver/test/cypress/integration/commands/xhr_spec.coffee +++ b/packages/driver/test/cypress/integration/commands/xhr_spec.coffee @@ -1426,6 +1426,29 @@ describe "src/cy/commands/xhr", -> } }) + describe "response fixtures", -> + it "works if the JSON file is valid", -> + cy + .server() + .route({ + method: 'POST', + url: '/test-xhr', + response: 'fixture:valid.json', + }) + .get('#trigger-xhr') + .click() + + it "works if the JSON file has content, null", -> + cy + .server() + .route({ + method: 'POST', + url: '/test-xhr', + response: 'fixture:null.json', + }) + .get('#trigger-xhr') + .click() + describe "errors", -> beforeEach -> Cypress.config("defaultCommandTimeout", 50) diff --git a/packages/server/lib/controllers/xhrs.coffee b/packages/server/lib/controllers/xhrs.coffee index b6462ca8c3a4..d391de95322f 100644 --- a/packages/server/lib/controllers/xhrs.coffee +++ b/packages/server/lib/controllers/xhrs.coffee @@ -50,6 +50,11 @@ module.exports = { if _.isObject(data) data = JSON.stringify(data) + ## when data is null, JSON.stringify returns null. + ## handle that case. + if data is null + data = [] + chunk = Buffer.from(data, encoding) headers["content-length"] = chunk.length From 69201b293257d13ef6c14913d8f44710ed6d357f Mon Sep 17 00:00:00 2001 From: KHeo Date: Fri, 1 Nov 2019 14:42:03 +0900 Subject: [PATCH 2/7] Added new fixture page to fix the failure. --- .../driver/test/cypress/fixtures/jquery.html | 7 ------- .../test/cypress/fixtures/xhr-triggered.html | 16 ++++++++++++++++ .../cypress/integration/commands/xhr_spec.coffee | 2 ++ 3 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 packages/driver/test/cypress/fixtures/xhr-triggered.html diff --git a/packages/driver/test/cypress/fixtures/jquery.html b/packages/driver/test/cypress/fixtures/jquery.html index cf9ab2bc04cc..ce1ad70d7f66 100644 --- a/packages/driver/test/cypress/fixtures/jquery.html +++ b/packages/driver/test/cypress/fixtures/jquery.html @@ -16,12 +16,5 @@
Nested Find
- - diff --git a/packages/driver/test/cypress/fixtures/xhr-triggered.html b/packages/driver/test/cypress/fixtures/xhr-triggered.html new file mode 100644 index 000000000000..1cbd596ff07d --- /dev/null +++ b/packages/driver/test/cypress/fixtures/xhr-triggered.html @@ -0,0 +1,16 @@ + + + + jQuery 3.2.1 Fixture + + + + + + + diff --git a/packages/driver/test/cypress/integration/commands/xhr_spec.coffee b/packages/driver/test/cypress/integration/commands/xhr_spec.coffee index 166fb3c44211..638cfa1e4539 100644 --- a/packages/driver/test/cypress/integration/commands/xhr_spec.coffee +++ b/packages/driver/test/cypress/integration/commands/xhr_spec.coffee @@ -1435,6 +1435,7 @@ describe "src/cy/commands/xhr", -> url: '/test-xhr', response: 'fixture:valid.json', }) + .visit('/fixtures/xhr-triggered.html') .get('#trigger-xhr') .click() @@ -1446,6 +1447,7 @@ describe "src/cy/commands/xhr", -> url: '/test-xhr', response: 'fixture:null.json', }) + .visit('/fixtures/xhr-triggered.html') .get('#trigger-xhr') .click() From d6488ae11191bccaae5f744ef2490d1fd2bc1e9a Mon Sep 17 00:00:00 2001 From: KHeo Date: Wed, 27 Nov 2019 09:04:22 +0900 Subject: [PATCH 3/7] [] -> ''. --- packages/server/lib/controllers/xhrs.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/server/lib/controllers/xhrs.coffee b/packages/server/lib/controllers/xhrs.coffee index d391de95322f..8802a713a45d 100644 --- a/packages/server/lib/controllers/xhrs.coffee +++ b/packages/server/lib/controllers/xhrs.coffee @@ -53,7 +53,7 @@ module.exports = { ## when data is null, JSON.stringify returns null. ## handle that case. if data is null - data = [] + data = '' chunk = Buffer.from(data, encoding) From 3b2e693922c3f3ecfea1eb3486997116eae8ebdd Mon Sep 17 00:00:00 2001 From: KHeo Date: Wed, 27 Nov 2019 12:22:07 +0900 Subject: [PATCH 4/7] Fixed test message. --- .../driver/test/cypress/integration/commands/xhr_spec.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/driver/test/cypress/integration/commands/xhr_spec.coffee b/packages/driver/test/cypress/integration/commands/xhr_spec.coffee index 638cfa1e4539..de6e7e16d9de 100644 --- a/packages/driver/test/cypress/integration/commands/xhr_spec.coffee +++ b/packages/driver/test/cypress/integration/commands/xhr_spec.coffee @@ -1427,7 +1427,7 @@ describe "src/cy/commands/xhr", -> }) describe "response fixtures", -> - it "works if the JSON file is valid", -> + it "works if the JSON file has an object", -> cy .server() .route({ @@ -1439,7 +1439,7 @@ describe "src/cy/commands/xhr", -> .get('#trigger-xhr') .click() - it "works if the JSON file has content, null", -> + it "works if the JSON file has null content", -> cy .server() .route({ From badd03bbef7110dfed533848e62e5944d76333e4 Mon Sep 17 00:00:00 2001 From: KHeo Date: Wed, 27 Nov 2019 12:32:05 +0900 Subject: [PATCH 5/7] Asserts returned json value on the client side. --- .../driver/test/cypress/fixtures/xhr-triggered.html | 5 ++++- .../test/cypress/integration/commands/xhr_spec.coffee | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/driver/test/cypress/fixtures/xhr-triggered.html b/packages/driver/test/cypress/fixtures/xhr-triggered.html index 1cbd596ff07d..99f443d18376 100644 --- a/packages/driver/test/cypress/fixtures/xhr-triggered.html +++ b/packages/driver/test/cypress/fixtures/xhr-triggered.html @@ -6,9 +6,12 @@ +
Result
diff --git a/packages/driver/test/cypress/integration/commands/xhr_spec.coffee b/packages/driver/test/cypress/integration/commands/xhr_spec.coffee index de6e7e16d9de..76d5f0962906 100644 --- a/packages/driver/test/cypress/integration/commands/xhr_spec.coffee +++ b/packages/driver/test/cypress/integration/commands/xhr_spec.coffee @@ -1438,6 +1438,11 @@ describe "src/cy/commands/xhr", -> .visit('/fixtures/xhr-triggered.html') .get('#trigger-xhr') .click() + .wait(250) + + cy + .get("#result") + .contains('{"foo":1,"bar":{"baz":"cypress"}}') it "works if the JSON file has null content", -> cy @@ -1450,6 +1455,11 @@ describe "src/cy/commands/xhr", -> .visit('/fixtures/xhr-triggered.html') .get('#trigger-xhr') .click() + .wait(250) + + cy + .get('#result') + .contains('""') describe "errors", -> beforeEach -> From 2c5ba47b93554d6bb09b55470ede39907ca782dd Mon Sep 17 00:00:00 2001 From: Gleb Bahmutov Date: Wed, 27 Nov 2019 09:57:11 -0500 Subject: [PATCH 6/7] simplify test a little, remove waits --- .../cypress/integration/commands/xhr_spec.coffee | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/driver/test/cypress/integration/commands/xhr_spec.coffee b/packages/driver/test/cypress/integration/commands/xhr_spec.coffee index 76d5f0962906..e3a7dc22c65c 100644 --- a/packages/driver/test/cypress/integration/commands/xhr_spec.coffee +++ b/packages/driver/test/cypress/integration/commands/xhr_spec.coffee @@ -1438,11 +1438,9 @@ describe "src/cy/commands/xhr", -> .visit('/fixtures/xhr-triggered.html') .get('#trigger-xhr') .click() - .wait(250) - + cy - .get("#result") - .contains('{"foo":1,"bar":{"baz":"cypress"}}') + .contains("#result", '{"foo":1,"bar":{"baz":"cypress"}}').should('be.visible') it "works if the JSON file has null content", -> cy @@ -1455,11 +1453,9 @@ describe "src/cy/commands/xhr", -> .visit('/fixtures/xhr-triggered.html') .get('#trigger-xhr') .click() - .wait(250) - + cy - .get('#result') - .contains('""') + .contains('#result', '""').should('be.visible') describe "errors", -> beforeEach -> From 01eca449c2589406bba22164dcaad42869ed76f9 Mon Sep 17 00:00:00 2001 From: Gleb Bahmutov Date: Wed, 27 Nov 2019 09:58:38 -0500 Subject: [PATCH 7/7] fixture json format --- packages/driver/test/cypress/fixtures/null.json | 2 +- packages/driver/test/cypress/fixtures/valid.json | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/driver/test/cypress/fixtures/null.json b/packages/driver/test/cypress/fixtures/null.json index ec747fa47ddb..19765bd501b6 100644 --- a/packages/driver/test/cypress/fixtures/null.json +++ b/packages/driver/test/cypress/fixtures/null.json @@ -1 +1 @@ -null \ No newline at end of file +null diff --git a/packages/driver/test/cypress/fixtures/valid.json b/packages/driver/test/cypress/fixtures/valid.json index 00ba50b5f555..28f84c440dc1 100644 --- a/packages/driver/test/cypress/fixtures/valid.json +++ b/packages/driver/test/cypress/fixtures/valid.json @@ -1,6 +1,6 @@ { - "foo": 1, - "bar": { - "baz": "cypress" - } -} \ No newline at end of file + "foo": 1, + "bar": { + "baz": "cypress" + } +}