Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions examples/LargePayloadCrashReporting.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Raygun Crash Reporting - Large Payload Example</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>

<script type="text/javascript">
!function (a, b, c, d, e, f, g, h) {
a.RaygunObject = e, a[e] = a[e] || function () {
(a[e].o = a[e].o || []).push(arguments)
}, f = b.createElement(c), g = b.getElementsByTagName(c)[0],
f.async = 1, f.src = d, g.parentNode.insertBefore(f, g), h = a.onerror, a.onerror = function (b, c, d, f, g) {
h && h(b, c, d, f, g), g || (g = new Error(b)), a[e].q = a[e].q || [], a[e].q.push({
e: g
})
}
}(window, document, "script", "http://cdn.raygun.io/raygun4js/raygun.min.js", "rg4js");
</script>
</head>
<body>

<div class="container">
<div class="header clearfix">
<br>
</div>

<div class="jumbotron">
<h1 class="text-center">Raygun4JS - Large Payload Support</h1>
<p class="text-center">
This example demonstrates that Raygun4JS now supports error messages longer than 512 characters.
</p>

<div class="row">
<div class="col-md-4">
<p class="text-center">
<button class="btn btn-lg btn-primary" id="ShortErrorButton" role="button">
Short Error (< 512 chars)
</button>
</p>
</div>
<div class="col-md-4">
<p class="text-center">
<button class="btn btn-lg btn-danger" id="LargeErrorButton" role="button">
Large Error (> 1000 chars)
</button>
</p>
</div>
</div>
</div>
</div>

<script type="text/javascript">
rg4js('apiKey', 'paste_your_api_key_here');
rg4js('enableCrashReporting', true);
</script>

<script type="text/javascript">
$(function () {
$('#ShortErrorButton').click(function () {
var shortMessage = "This is a short error message that is less than 512 characters long.";
console.log("Sending short error (" + shortMessage.length + " characters)");
Raygun.send(new Error(shortMessage));
});

$('#LargeErrorButton').click(function () {
var largeMessage = "This is a long error message that exceeds 512 characters.\n".repeat(20);
console.log("Sending large error (" + largeMessage.length + " characters)");
Raygun.send(new Error(largeMessage));
});
});
</script>

</body>
</html>
4 changes: 0 additions & 4 deletions src/raygun.js
Original file line number Diff line number Diff line change
Expand Up @@ -865,10 +865,6 @@ var raygunFactory = function (window, $, undefined) {
finalMessage = scriptError;
}

if (finalMessage && typeof finalMessage === 'string') {
finalMessage = finalMessage.substring(0, 512);
}

var pageLocation;
if (!Raygun.Utilities.isReactNative()) {
pageLocation = [
Expand Down
26 changes: 26 additions & 0 deletions tests/fixtures/v2/manualSendVeryLongMessage.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<head>
<title>Raygun4JS with V2 API - Very Long Message Test</title>
<script src="/fixtures/common/instrumentXHRs.js"></script>
<script type="text/javascript">
!function(a,b,c,d,e,f,g,h){a.RaygunObject=e,a[e]=a[e]||function(){
(a[e].o=a[e].o||[]).push(arguments)},f=b.createElement(c),g=b.getElementsByTagName(c)[0],
f.async=1,f.src=d,g.parentNode.insertBefore(f,g),h=a.onerror,a.onerror=function(b,c,d,f,g){
h&&h(b,c,d,f,g),g||(g=new Error(b)),a[e].q=a[e].q||[],a[e].q.push({
e:g})}}(window,document,"script","/dist/raygun.js","rg4js");
</script>
</head>
<body>
<script type="text/javascript">
rg4js('apiKey', 'abcdef==');
rg4js('enableCrashReporting', true);

setTimeout(function () {
// Create a message much longer than 1000 characters
var veryLongMessage = "This is a very long error message designed to test that the 512 character limit has been removed from Raygun4JS. ".repeat(15) + "This final part should ensure we're well over 1000 characters to test large payload support thoroughly.";
rg4js('send', veryLongMessage);
}, 1000);
</script>
</body>
</html>
20 changes: 20 additions & 0 deletions tests/specs/v2/payloadLengthTests.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
var _ = require('underscore');

describe("Large payload support tests for v2 manual send", function() {

it("supports very large error messages (>1000 characters)", async function () {
await browser.url('http://localhost:4567/fixtures/v2/manualSendVeryLongMessage.html');

await browser.pause(4000);

var requestPayloads = await browser.execute(function () {
return window.__requestPayloads;
});

var passes = _.any(requestPayloads, function (payload) {
return payload.Details.Error.Message.length > 1000;
});

expect(passes).toBe(true);
});
});