diff --git a/page_eval_test.go b/page_eval_test.go index 03d0d467..59a6aedc 100644 --- a/page_eval_test.go +++ b/page_eval_test.go @@ -281,3 +281,24 @@ func TestEvalOptionsString(t *testing.T) { g.Eq(rod.Eval(`() => this.parentElement`).This(el.Object).String(), "() => this.parentElement() button") } + +func TestEvalObjectReferenceChainIsTooLong(t *testing.T) { + g := setup(t) + + p := g.page.MustNavigate(g.blank()) + + obj, err := p.Evaluate(&rod.EvalOptions{ + JS: `() => { + let a = {b: 1} + a.c = a + return a + }`, + }) + g.E(err) + + _, err = p.Eval(`a => a`, obj) + g.Eq(err.Error(), "{-32000 Object reference chain is too long }") + + val := p.MustEval(`a => a.c.c.c.c.b`, obj) + g.Eq(val.Int(), 1) +}