Write response body to file

Is there a convenient way to write the response body to an html file for debugging purposes?

Many Thanks

OTG Load Testing

The easiest thing was to console log the response body and redirect stderr to a file:
k6 run test.js 2>resp.html

Do a little editing and open in a browser

To somewhat improve the UX of that, you can also use the --logformat raw or --logformat json and --console-output=./path/to/console-log-file.log

1 Like

Hi @ned does --console-output=./filename.log takes only the outputs from console.log() ?

I run the below command using the docker-compose setup.
docker-compose run k6 run --logformat raw tests.js --console-output=./test.csv

This shows me permission denied. Any thoughts ?

Note that --console-output with a windows version of k6 works perfectly fine.

Hope Ned doesn’t mind me jumping in :slight_smile:

Yes, and also console.error(), console.info(), etc.

As for the permission denied error, that has to do with Docker. A few months ago the image was changed to use an unprivileged user, so if you want to write inside the container or to a bind volume (the default docker-compose.yml mounts ./samples:/scripts), you’ll have to specify the --user/-u option, either by making it run as root with -u root (not recommended), or by using the host’s UID/GID like so:

docker-compose run -u "$(id -u):$(id -g)" k6 run --logformat raw --console-output=/scripts/test.csv /scripts/stages.js

I’ll make a note to mention this in our docs.

2 Likes