\\\" then morph #target to content")
+ (dom-set-attr _el-go "_" "on click set content to \"
morphed
\" then morph #target to content")
(dom-set-inner-html _el-go "go")
(dom-append (dom-body) _el-target)
(dom-append (dom-body) _el-go)
@@ -7267,7 +7257,7 @@
(let ((_el-target (dom-create-element "div")) (_el-button (dom-create-element "button")))
(dom-set-attr _el-target "id" "target")
(dom-set-inner-html _el-target "old")
- (dom-set-attr _el-button "_" "on click make a then put \\\"moved\\\" into it then set #target to it")
+ (dom-set-attr _el-button "_" "on click make a then put \"moved\" into it then set #target to it")
(dom-set-inner-html _el-button "go")
(dom-append (dom-body) _el-target)
(dom-append (dom-body) _el-button)
@@ -7320,14 +7310,15 @@
))
(deftest "hyperscript in replacement content is initialized"
(hs-cleanup!)
- (let ((_el-target (dom-create-element "div")) (_el-target1 (dom-create-element "button")))
+ (let ((_el-target (dom-create-element "div")) (_el-go (dom-create-element "button")))
(dom-set-attr _el-target "id" "target")
(dom-set-inner-html _el-target "old")
- (dom-set-attr _el-target1 "id" "target")
- ;; HS source has bare quotes or embedded HTML
- (dom-set-inner-html _el-target1 "new'\\\">go")
+ (dom-set-attr _el-go "id" "go")
+ (dom-set-attr _el-go "_" "on click set #target to '
new
'")
+ (dom-set-inner-html _el-go "go")
(dom-append (dom-body) _el-target)
- (dom-append (dom-body) _el-target1)
+ (dom-append (dom-body) _el-go)
+ (hs-activate! _el-go)
(dom-dispatch (dom-query-by-id "go") "click" nil)
(assert= (dom-text-content (dom-query-by-id "target")) "new")
(dom-dispatch (dom-query-by-id "target") "click" nil)
@@ -7355,7 +7346,7 @@
(let ((_el-target (dom-create-element "div")) (_el-button (dom-create-element "button")))
(dom-set-attr _el-target "id" "target")
(dom-set-inner-html _el-target "old")
- (dom-set-attr _el-button "_" "on click put \\\"new\\\" into #target")
+ (dom-set-attr _el-button "_" "on click put \"new\" into #target")
(dom-set-inner-html _el-button "go")
(dom-append (dom-body) _el-target)
(dom-append (dom-body) _el-button)
@@ -7476,9 +7467,11 @@
(dom-set-inner-html _el-span2 "B")
(dom-add-class _el-span3 "a")
(dom-set-inner-html _el-span3 "C")
- (dom-set-attr _el-button "_" "\\\"on")
+ (dom-set-attr _el-button "_" "on click set result to ( in #box) where it matches .a then put result.length into me")
+ (dom-set-inner-html _el-button "go (parens)")
(dom-set-attr _el-b2 "id" "b2")
- (dom-set-attr _el-b2 "_" "\\\"on")
+ (dom-set-attr _el-b2 "_" "on click set result to in #box where it matches .a then put result.length into me")
+ (dom-set-inner-html _el-b2 "go")
(dom-append (dom-body) _el-box)
(dom-append _el-box _el-span)
(dom-append _el-box _el-span2)
@@ -7500,7 +7493,8 @@
(dom-set-inner-html _el-span "A")
(dom-add-class _el-span2 "b")
(dom-set-inner-html _el-span2 "B")
- (dom-set-attr _el-button "_" "\\\"set")
+ (dom-set-attr _el-button "_" "set :items to in #box where it matches .a on click put :items.length into me")
+ (dom-set-inner-html _el-button "go")
(dom-append (dom-body) _el-box)
(dom-append _el-box _el-span)
(dom-append _el-box _el-span2)
@@ -7926,7 +7920,7 @@
(hs-cleanup!)
(let ((_el-d1 (dom-create-element "div")))
(dom-set-attr _el-d1 "id" "d1")
- (dom-set-attr _el-d1 "_" "\\\"on")
+ (dom-set-attr _el-d1 "_" "on click default #d1's foo to 'bar' then put #d1's foo into me")
(dom-append (dom-body) _el-d1)
(hs-activate! _el-d1)
(dom-dispatch (dom-query-by-id "d1") "click" nil)
@@ -7936,7 +7930,7 @@
(hs-cleanup!)
(let ((_el-d1 (dom-create-element "div")))
(dom-set-attr _el-d1 "id" "d1")
- (dom-set-attr _el-d1 "_" "\\\"on")
+ (dom-set-attr _el-d1 "_" "on click default foo of me to 'bar' then put my foo into me")
(dom-append (dom-body) _el-d1)
(hs-activate! _el-d1)
(dom-dispatch (dom-query-by-id "d1") "click" nil)
@@ -8013,7 +8007,7 @@
(deftest "handles rejected promises without hanging"
(hs-cleanup!)
(let ((_el-div (dom-create-element "div")))
- (dom-set-attr _el-div "_" "on click js return Promise.reject(\\\"boom\\\") end catch e put e into my.innerHTML")
+ (dom-set-attr _el-div "_" "on click js return Promise.reject(\"boom\") end catch e put e into my.innerHTML")
(dom-append (dom-body) _el-div)
(hs-activate! _el-div)
(dom-dispatch _el-div "click" nil)
@@ -8095,7 +8089,7 @@
(deftest "the result in a when clause refers to previous command result, not element being tested"
(hs-cleanup!)
(let ((_el-div (dom-create-element "div")) (_el-s1 (dom-create-element "span")) (_el-s2 (dom-create-element "span")))
- (dom-set-attr _el-div "_" "\\\"on")
+ (dom-set-attr _el-div "_" "on click get 'found' then show in me when the result is 'found'")
(dom-set-attr _el-s1 "id" "s1")
(dom-set-attr _el-s1 "style" "display:none")
(dom-set-inner-html _el-s1 "A")
@@ -8103,8 +8097,8 @@
(dom-set-attr _el-s2 "style" "display:none")
(dom-set-inner-html _el-s2 "B")
(dom-append (dom-body) _el-div)
- (dom-append (dom-body) _el-s1)
- (dom-append (dom-body) _el-s2)
+ (dom-append _el-div _el-s1)
+ (dom-append _el-div _el-s2)
(hs-activate! _el-div)
(dom-dispatch _el-div "click" nil)
(assert (dom-visible? (dom-query-by-id "s1")))
@@ -8113,7 +8107,7 @@
(deftest "the result after show...when is the matched elements"
(hs-cleanup!)
(let ((_el-div (dom-create-element "div")) (_el-p (dom-create-element "p")) (_el-p2 (dom-create-element "p")) (_el-out (dom-create-element "span")))
- (dom-set-attr _el-div "_" "\\\"on")
+ (dom-set-attr _el-div "_" "on click show in me when its textContent is 'yes' then if the result is empty put 'none' into #out else put 'some' into #out")
(dom-set-attr _el-p "style" "display:none")
(dom-set-inner-html _el-p "yes")
(dom-set-attr _el-p2 "style" "display:none")
@@ -8121,9 +8115,9 @@
(dom-set-attr _el-out "id" "out")
(dom-set-inner-html _el-out "--")
(dom-append (dom-body) _el-div)
- (dom-append (dom-body) _el-p)
- (dom-append (dom-body) _el-p2)
- (dom-append (dom-body) _el-out)
+ (dom-append _el-div _el-p)
+ (dom-append _el-div _el-p2)
+ (dom-append _el-div _el-out)
(hs-activate! _el-div)
(dom-dispatch _el-div "click" nil)
(assert= (dom-text-content (dom-query-by-id "out")) "some")
@@ -8253,7 +8247,7 @@
(deftest "can have comments in attributes (triple dash)"
(hs-cleanup!)
(let ((_el-div (dom-create-element "div")))
- (dom-set-attr _el-div "_" "on click put \\\"clicked\\\" into my.innerHTML ---put some content into the div...")
+ (dom-set-attr _el-div "_" "on click put \"clicked\" into my.innerHTML ---put some content into the div...")
(dom-append (dom-body) _el-div)
(hs-activate! _el-div)
(dom-dispatch _el-div "click" nil)
@@ -8263,7 +8257,7 @@
(hs-cleanup!)
(let ((_el-d1 (dom-create-element "div")))
(dom-set-attr _el-d1 "id" "d1")
- (dom-set-attr _el-d1 "_" "on click blargh end on mouseenter put \\\"hovered\\\" into my.innerHTML")
+ (dom-set-attr _el-d1 "_" "on click blargh end on mouseenter put \"hovered\" into my.innerHTML")
(dom-append (dom-body) _el-d1)
(hs-activate! _el-d1)
))
@@ -8271,7 +8265,7 @@
(hs-cleanup!)
(let ((_el-d1 (dom-create-element "div")))
(dom-set-attr _el-d1 "id" "d1")
- (dom-set-attr _el-d1 "_" "on click blargh end on mouseenter also_bad end on focus put \\\"focused\\\" into my.innerHTML")
+ (dom-set-attr _el-d1 "_" "on click blargh end on mouseenter also_bad end on focus put \"focused\" into my.innerHTML")
(dom-append (dom-body) _el-d1)
(hs-activate! _el-d1)
))
@@ -8283,7 +8277,7 @@
(dom-set-attr _el-d1 "id" "d1")
(dom-set-attr _el-d1 "_" "on click blargh end on mouseenter also_bad")
(dom-set-attr _el-d2 "id" "d2")
- (dom-set-attr _el-d2 "_" "on click put \\\"clicked\\\" into my.innerHTML")
+ (dom-set-attr _el-d2 "_" "on click put \"clicked\" into my.innerHTML")
(dom-append (dom-body) _el-div)
(dom-append _el-div _el-d1)
(dom-append _el-div _el-d2)
@@ -8370,7 +8364,7 @@
(hs-cleanup!)
(let ((_el-arDiv (dom-create-element "div")))
(dom-set-attr _el-arDiv "id" "arDiv")
- (dom-set-attr _el-arDiv "_" "on click set my @data-foo to \\\"blue\\\"")
+ (dom-set-attr _el-arDiv "_" "on click set my @data-foo to \"blue\"")
(dom-set-attr _el-arDiv "data-foo" "red")
(dom-append (dom-body) _el-arDiv)
(hs-activate! _el-arDiv)
@@ -8386,7 +8380,7 @@
(dom-set-attr _el-outerDiv2 "id" "outerDiv2")
(dom-set-attr _el-outerDiv2 "foo" "bar")
(dom-set-attr _el-d1b "id" "d1b")
- (dom-set-attr _el-d1b "_" "on click set closest @foo to \\\"doh\\\"")
+ (dom-set-attr _el-d1b "_" "on click set closest @foo to \"doh\"")
(dom-append (dom-body) _el-outerDiv2)
(dom-append _el-outerDiv2 _el-d1b)
(hs-activate! _el-d1b)
@@ -8394,16 +8388,14 @@
))
(deftest "closest does not consume a following where clause"
(hs-cleanup!)
- (let ((_el-table (dom-create-element "table")) (_el-tr (dom-create-element "tr")) (_el-td (dom-create-element "td")) (_el-input (dom-create-element "input")) (_el-input4 (dom-create-element "input")) (_el-master (dom-create-element "input")) (_el-table6 (dom-create-element "table")) (_el-out (dom-create-element "div")))
+ (let ((_el-table (dom-create-element "table")) (_el-tr (dom-create-element "tr")) (_el-td (dom-create-element "td")) (_el-input (dom-create-element "input")) (_el-input4 (dom-create-element "input")) (_el-master (dom-create-element "input")) (_el-out (dom-create-element "div")))
(dom-add-class _el-input "cb")
(dom-set-attr _el-input "type" "checkbox")
(dom-add-class _el-input4 "cb")
(dom-set-attr _el-input4 "type" "checkbox")
(dom-set-attr _el-master "id" "master")
- (dom-set-attr _el-master "_" "\\\"set")
+ (dom-set-attr _el-master "_" "set :others to in the closest
where it is not me on click put :others.length into #out")
(dom-set-attr _el-master "type" "checkbox")
- (dom-set-attr _el-master " in #box where it matches .c then put 'none' into #out else put 'found' into #out")
+ (dom-set-inner-html _el-button "go")
(dom-set-attr _el-out "id" "out")
(dom-append (dom-body) _el-box)
(dom-append _el-box _el-span)
diff --git a/tests/playwright/generate-sx-tests.py b/tests/playwright/generate-sx-tests.py
index e7339698..7154f030 100644
--- a/tests/playwright/generate-sx-tests.py
+++ b/tests/playwright/generate-sx-tests.py
@@ -98,6 +98,9 @@ def parse_html(html):
# Remove | separators
html = html.replace(' | ', '')
+ # Fix escaped attribute delimiters from JSON extraction (\" → ")
+ html = html.replace('\\"', '"')
+
elements = []
stack = []