Encode a fixture with Protocol Buffers
Use this plugin to encode a Cypress fixture with Protocol Buffers.
npm i -D cypress-protobuf
# or
yarn add -D cypress-protobuf
then open your cypress/plugins/index.js
file and register a new task
module.exports = on => {
on("task", {
protobufEncode: require("cypress-protobuf"),
});
};
To encode with Protocol Buffers a fixture
cy.fixture("FIXTURE_NAME.json+")
.then(json => {
cy.task("protobufEncode", {
fixtureBody: json, // the fixture body
message: "MESSAGE_NAME", // the protobuf message to use
protoFilePath: "./public/example.proto", // the path (starting from your project directory) to the .profo file
})
.then(encodedJson => {
// 🎉 `encodedJson` contains the encoded fixture
cy.route({
headers: {
"content-type": "application/octet-stream"
},
response: encodedJson,
url: 'API_URL'
}).as("FIXTURE_NAME");
});
});
and in your test you will wait for the request as usual
cy.wait("@YOUR_FIXTURE_NAME");
Take a look at the example test source code.
- the plugin saves the last
protoFilePath
so you can avoid to pass it every time. You can even set it at the beginning of your test suite
before(() => {
cy.task("protobufEncode", {
protoFilePath: "./public/escrow/ui.proto"
});
});
Thanks goes to these wonderful people (emoji key):
Stefano Magni 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!