[{"data":1,"prerenderedAt":149},["ShallowReactive",2],{"article-eadapter-testing-without-production":3},{"id":4,"title":5,"author":6,"body":7,"category":131,"description":132,"extension":133,"featured":134,"image":135,"meta":136,"navigation":137,"path":138,"publishedAt":139,"readingTime":140,"seo":141,"stem":142,"tags":143,"videoUrl":147,"__hash__":148},"articles\u002Farticles\u002Feadapter-testing-without-production.md","How to Test CargoWise Integrations Without Testing in Production","Don Dappa",{"type":8,"value":9,"toc":125},"minimark",[10,19,39,44,59,62,90,94,97,104,107],[11,12,13,14,18],"p",{},"\"Never test in production\" sounds too obvious to print. It isn't — testing against production CargoWise is ",[15,16,17],"em",{},"common"," in this world, because test environments are hard to get and easy to postpone. Push back: ask WiseTech for a test company with its own eAdapter endpoints, and route all integration development through it.",[11,20,21,22,26,27,30,31,34,35,38],{},"Then move changes through four stages, each catching a class of bug the previous one can't: ",[23,24,25],"strong",{},"development"," (mock CW responses, runs in CI), ",[23,28,29],{},"integration"," (the CW test environment — real schema validation, real quirks), ",[23,32,33],{},"staging"," (production-like data in the test environment), ",[23,36,37],{},"production"," (monitoring on, rollback ready). The staging row earns its keep: mock data is polite; production data is not. The bugs that survive are data-shaped — a company with an ampersand in its name, an address two characters over a limit.",[40,41,43],"h2",{"id":42},"version-control-the-fixtures-they-are-the-regression-suite","Version-control the fixtures — they ARE the regression suite",[11,45,46,47,51,52,51,55,58],{},"Five artefact types belong in your repo: the CW XSD schema files (",[48,49,50],"code",{},"UniversalShipment.xsd",", ",[48,53,54],{},"Consol.xsd",[48,56,57],{},"Forward.xsd","), success-case XML payloads, error-case payloads (the valuable ones), XSLT transforms, and expected outputs. When CargoWise updates its schemas, you diff the new XSDs against git and read exactly what changed — instead of discovering it as a production rejection.",[11,60,61],{},"Schema-valid is necessary, not sufficient. The eAdapter is, in the words of the Steele library's own docs, \"picky about how you compress, wrap, and send your XML.\" Your error fixtures should encode the real production war stories:",[63,64,65,73,76,87],"ul",{},[66,67,68,69,72],"li",{},"A company name containing ",[48,70,71],{},"&"," — \"JUICE & WORLD, S.L.\" produced malformed XML that CW silently rejected. Every string goes through one escape function.",[66,74,75],{},"Field length limits CW won't negotiate: pack type max 3 chars, address lines max 50, port codes max 5 and valid UN\u002FLOCODEs.",[66,77,78,79,82,83,86],{},"DataContext shape: full context at parent level ",[15,80,81],{},"only","; SubShipments get only a ",[48,84,85],{},"DataTargetCollection",". Violating it causes duplicate jobs.",[66,88,89],{},"Ocean jobs are validated far more strictly than air — an air-grade test suite passed off as ocean coverage is a false sense of security.",[40,91,93],{"id":92},"the-replay-harness","The replay harness",[11,95,96],{},"Build a tool that can replay any saved XML message through your pipeline, compare actual vs expected output, and run the whole fixture library in CI. Feed it from failure handling: every failed message saves its raw XML with a reason code — pre-made fixtures with the bug still inside.",[11,98,99,100,103],{},"Then the rule that is the entire testing philosophy in one sentence: ",[23,101,102],{},"when you fix a bug, add the failing message as a test case."," The fix and the proof travel together, permanently.",[105,106],"hr",{},[11,108,109,115,116,119,120],{},[23,110,111,112],{},"Chapter 8 of ",[15,113,114],{},"eAdapter in Production"," adds the Training-environment cleanup runbook (deactivation order, the ",[48,117,118],{},"IsForwardRegistered"," invoicing-header gotcha) and the go-live checklist per message type. ",[121,122,124],"a",{"href":123},"\u002Feadapter\u002Fproduction-ops?channel=article_testing","Get Vol 2 →",{"title":126,"searchDepth":127,"depth":127,"links":128},"",2,[129,130],{"id":42,"depth":127,"text":43},{"id":92,"depth":127,"text":93},"technical","Test environments are hard to get in the CW world — so teams test in prod. Push back: the test company, version-controlled fixtures, and the replay harness that turns every failure into a regression test.","md",false,"\u002Fimages\u002Farticles\u002Feadapter-testing.webp",{},true,"\u002Farticles\u002Feadapter-testing-without-production","2026-09-02",5,{"title":5,"description":132},"articles\u002Feadapter-testing-without-production",[144,145,146],"CargoWise eAdapter","testing","fixtures",null,"Hq6ATUwLAINidOwxLV1tyrj1xbZg3Ia0_wTsI48cotg",1788800213430]