From 3b1f00c279e25044f3f7e40db8233fb3387db1d7 Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Fri, 7 Jul 2023 12:57:07 +0200 Subject: [PATCH 01/25] TASK: Initialize ESCR-driven E2E test setup for 1Dimension fixture This includes the replacement of the 1Dimension site export with an equivalent ESCR event export, as well as the adjustment of the e2e-docker.sh script for bootstrapping the test environment. --- .../SitePackage/Configuration/Settings.yaml | 66 +- .../ee3d239e-48b0-4f99-90be-054301b91792.json | 14 + .../50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json | 20 + .../6791d1beca5fa4ab78f1b2b1a44d43692f99b5dc | Bin 63808 -> 0 bytes .../Resources/Private/Content/Sites.xml | 680 ------------------ .../Resources/Private/Content/events.jsonl | 59 ++ .../TestDistribution/composer.json | 16 +- Tests/IntegrationTests/docker-compose.yaml | 4 +- Tests/IntegrationTests/e2e-docker.sh | 11 +- 9 files changed, 135 insertions(+), 735 deletions(-) create mode 100644 Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json create mode 100644 Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json delete mode 100644 Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Resources/6791d1beca5fa4ab78f1b2b1a44d43692f99b5dc delete mode 100644 Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Sites.xml create mode 100644 Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/events.jsonl diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Configuration/Settings.yaml b/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Configuration/Settings.yaml index c3fcfc6093..274cdccd43 100644 --- a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Configuration/Settings.yaml +++ b/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Configuration/Settings.yaml @@ -1,46 +1,24 @@ Neos: - ContentRepository: - contentDimensions: - language: - label: 'Language' - icon: icon-language - default: en_US - defaultPreset: en_US - presets: - en_US: - label: 'English (US)' + ContentRepositoryRegistry: + contentRepositories: + default: + contentDimensions: + language: + label: 'Language' values: - - en_US - uriSegment: en - en_UK: - label: 'English (UK)' - values: - - en_UK - - en_US - uriSegment: uk - de: - label: German - values: - - de - uriSegment: de - fr: - label: French - values: - - fr - uriSegment: fr - nl: - label: Dutch - values: - - nl - - de - uriSegment: nl - da: - label: Danish - values: - - da - uriSegment: da - lv: - label: Latvian - values: - - lv - uriSegment: lv + 'en_US': + label: English (US) + specializations: + 'en_UK': + label: English (UK) + 'de': + label: German + specializations: + 'nl': + label: Dutch + 'fr': + label: French + 'da': + label: Danish + 'lv': + label: Latvian diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json b/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json new file mode 100644 index 0000000000..e5d089b54b --- /dev/null +++ b/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json @@ -0,0 +1,14 @@ +{ + "identifier": "ee3d239e-48b0-4f99-90be-054301b91792", + "type": "IMAGE", + "title": "", + "copyrightNotice": "", + "caption": "", + "assetSourceIdentifier": "neos", + "resource": { + "filename": "neos_primary.png", + "collectionName": "persistent", + "mediaType": "image\/png", + "sha1": "aac28f51e5ca842e2646e88e7d242ac3c27e1f25" + } +} \ No newline at end of file diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json b/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json new file mode 100644 index 0000000000..af47865fee --- /dev/null +++ b/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json @@ -0,0 +1,20 @@ +{ + "identifier": "50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1", + "originalAssetIdentifier": "ee3d239e-48b0-4f99-90be-054301b91792", + "name": "", + "width": 126, + "height": 126, + "presetIdentifier": null, + "presetVariantName": null, + "imageAdjustments": [ + { + "type": "CROP_IMAGE", + "properties": { + "x": 328, + "y": 0, + "width": 126, + "height": 126 + } + } + ] +} \ No newline at end of file diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Resources/6791d1beca5fa4ab78f1b2b1a44d43692f99b5dc b/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Resources/6791d1beca5fa4ab78f1b2b1a44d43692f99b5dc deleted file mode 100644 index 49b2fb44034429c196e9678d86be7c1983a05470..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63808 zcmeHP&2J+~6?Yr24oKsKf54i5VEFw!)y7WSU9Z~xVOQ0YUbV5rQeYDfb@9HZ*yz$ysU#nCqHy*ru|0lTakiYar{JeVOPaos*<*j#r{_9F*;UDC= zKfJZ@wMr$ZJh;F7-urWv@BZeWyK^sJzJ#17*D^5gTEITuR~hiYJ6Z`Icn`dz8E`ag zKjS^{j%L8ou>Fkpz&n}&N5l3r-UIJw1{@9B&v*~KqZx2CY(L{Y@Q!A{(XjoD_rT|y zfscQG`OD~CfP5`^?WP&OX&4@O(~Man?}4`j zNYgMp@TM8FMBW2$36Q2?c;HPlW{JE9-Vz{9!|=eHX3P?K54#ybl97xIkz zTi^I`75ZynUKhvMI!Al=-~ai0YfQg0&B#}PV9CtcP4IPkj)o2y`QkM-W%_T>l;a`1 zSq0PiTVNBqf^Z9b3O+_~U0kgtH8C0pa2Xte7r;__0l_x-2;4%hcrT`jfmhDgVR0LL zM{HRpcmlB_1l5#@&xRCo7Q$2JYb8UEpF!7Sa8oj2QUk95r}JB2lS+lSF>xhmg7+jr z8EY?S0CE<<)B!k4z^{AHm0%y7n5$I4BLIT^AvkZqVPc3_0Gj~+c&K#-J|JfexJl59 z%2}@fkgMHM=`jLcRqPWeS{kLSz_v5kdN?byA9-WW)(Xtepeb$v>&R7muyKCyL(;vf z*bB&%4LaSV50~&M6JIgTLX7I za7_!HAy@b4jP^Nx!iwcG(*pBZy#wa+dT+^r-VmQj0eBG{f?1uW^ccEsL+{AF%v4!c z^6)8uE)&qXC-dxb1a2dq4z5F_a#lkl^Hm3%o)@UQM~O2YhSKa!1bYu`{2Z>5#elZK zx4XJipT z5v%G5EFo6!E}Y+&2%E~l7Z$>f!MH{E(l(IKTogVZKu2(bCoECRM8F2xKVy^@9m80n6wRg zd6-^@o=4!1aNiuIb7-lD)2vj<5>Ego-kU}_l+*_Q0`y;iC55?+pj(hFl;C3sgQps! zr5{SK&v@=lI^vR>`7)(5%6p{jsH2FeX!xKJcj21~luIC>mc^ z0PwzWf^8;kS73Na%|3x>;UYod7OxrX1CMse4B_5%d`(B;AK}A3jGhS$OJWkJ$y{VH zbB%@yd%&xip_}boUN;T(=PAwujE*?#1D#OD{at~+2K=fD4Owl3|pCqwm?e~d5;Ra@XY2eSpcnwbK z9*=T+?i3_wtcaRj&&CS8>bOQA;OKV!!Uo61rB#DSFc|Cu@*r0dNJ#{qQ&U z<{Lk{gu$c}{S_+s>xMxTDvm_G)EMl)jG&Rrv>SdsfkFbBmd-Gct8GhoXcXJwOBqR^ zQ&ERMrkt3dr34=(t6IYFbX@>z9pH0tTJRZDFD~fe<8%wm6>j1}(7uhMjNvlVq&vLk z7F-74N4_zJ6~&c{ziz%6y$gV%;CX^)om1G8oOvMnf13O0`+xZ@H+>tZHO)b=8sOg} zFsE@=bPI|$z(=SAzLk0a4y4L$0bUw!X>tI+3FACG9p>OfR0QJ31rK}msG&TS}wj#~b2!W6$_zRJNQw*hVe;V9j<03VDBZra<_ z3b2nWw*Y?m@CjJ=)uc&SJRzO}{KoY`l4E{web5wso&_Hh(+2R{5a@ji1fUpC2wqiJ z0yqghhRzCXG$SRh0H5V7igK6R6##Xhys5YX&}z63!7PN{gFddNMDV%Av^bDU{TXi( zD6OFcmDzP67#?7Fs!gI!Qs=byaWw#QOSlJLZ-V(~n5LNd3xeK(kHB+@NhAn|i2~(z z)&=IZF$#1{g$TgslR*=F7Y^}UaA@EdC&)JC3H&*4G{hxlT4`C}*r`Bf=0pHKSAumo z&H|9G01XDp-`WJYKIex7n#$kYsAcOCekUG&kes=M*sSS7KAs?$H9RbVqy5&Dz}I{HsCwK&Df)a=(`$q1IY)RP{+x+MPW?G1?%#dm%vFnJ`9u}Nf8 z5KJusz9|sqE38v9>*325eAb=jUtktUViSZv8zP9e1y5gSysh?thj15yhZ6R|?Ay`10R3>+F#8()PX*t=Hj8jcV3uEga8)af;4A;0yHSDzfzD>X2$UcX z3A(+4qWmhb!J8sU+1wD=yn;-rGatV4F>3|PTotxr!d3vAx^qx_2zWI^B+EZ^7YjZD z;{Gmq5}|MWPXVRPb_Mhr9Z|%;tl+D))u$X7m`OqKFM+4v>_fuA@gt%4YmS~l% zX!c0_`2?U#9&aSNjAh_&1B1pDC|6VdDe|$gV!;5|u0iZvAbNXf#t#fw$NjT`&q=qe z>F<1>;jnY%W?JxY{-hBkDxyl=zE63>x`W7 z96X?i&PwSFg1b=Mk`5Rp2ipXkOP1si7pb_y4gYUTH)<&Is(`$JO_O|awcLZx?MZxv z?JbPwRw%LE`xjzkfu|!W!RJtda11_@76EL9kY5GY!Meif0sYT-)7?V%-&0k*1;XRZjiG+&(UcOhR%1fBvDfY0F(F|aPUt*&gR<27}?!-kZ^ zB6}!JSV|k>VaQhl!sGUMi5?a)^E8;N!EsUEOjg5aeEP{0T^EeX7nk7;oooU9 zL!i^182HFJ1XRa8Xa7RfR`8WeJ0FQ!1=~$!4*3c(kQ1h?)iMS;12G1kgH$zd<8}*N zQ~_}BGKL`tzr;cLB7cynuNIrnm^qgYhHe8Suc%b7hsJ z2i__;<-vI1<+-v-(gSZ5obq5i@bX+)CFy~;3Ql=29(Z}KtdjJ=TLq^)7!SNWS5`@S z;H`pF9*hTGo-3;)J@8h+DG$a2FVB@#k{)=g;FJgBf$!&P{qujlUa5TLj}PuIzt?Yc z;>H(&6EMev^uWh+;zWxF-U*oFL3-fhIdP)J1MdXP@gP0$@tio(;(>Pp=6H}E_;^m7 zXz{>10dqV^4}3f)PPBO7oq#zWqz68p6DL}3|M#7@e)0PE-eIs0ez0=?Z{Kfx^gk>S BXl?)i diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Sites.xml b/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Sites.xml deleted file mode 100644 index 06d505de63..0000000000 --- a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Sites.xml +++ /dev/null @@ -1,680 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/events.jsonl b/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/events.jsonl new file mode 100644 index 0000000000..d771fe6cc3 --- /dev/null +++ b/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/events.jsonl @@ -0,0 +1,59 @@ +{"identifier":"d08644be-70fd-4f47-9078-f676bbe13544","type":"ContentStreamWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8"},"metadata":[]} +{"identifier":"152f7ffe-b2a5-4237-beab-c4db9fa15587","type":"RootNodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"2fdbb3ea-1270-49bc-8f8b-cbfc563ef9a6","nodeTypeName":"Neos.Neos:Sites","coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"},{"language":"de"},{"language":"nl"},{"language":"fr"},{"language":"da"},{"language":"lv"}],"nodeAggregateClassification":"root"},"metadata":[]} +{"identifier":"c977a059-ba63-4132-a190-baa6ced4f614","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"fr"},"coveredDimensionSpacePoints":[{"language":"fr"}],"parentNodeAggregateId":"2fdbb3ea-1270-49bc-8f8b-cbfc563ef9a6","nodeName":"neos-test-site","initialPropertyValues":{"title":{"value":"Accueil","type":"string"},"uriPathSegment":{"value":"home","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"7e1e6a07-b80f-4cad-8fe6-519d34b86cad","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"language":"fr"},"peerOrigin":{"language":"en_UK"},"peerCoverage":[{"language":"en_UK"}]},"metadata":[]} +{"identifier":"37c01008-80f0-4252-8ff5-d44154cec8e7","type":"NodePropertiesWereSet","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","originDimensionSpacePoint":{"language":"en_UK"},"affectedDimensionSpacePoints":[{"language":"en_UK"}],"propertyValues":{"title":{"value":"Home","type":"string"},"uriPathSegment":{"value":"home","type":"string"},"image":{"value":{"__flow_object_type":"Neos\\Media\\Domain\\Model\\ImageVariant","__identifier":"50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1"},"type":"Neos\\Media\\Domain\\Model\\ImageInterface"}}},"metadata":[]} +{"identifier":"c30068ba-258b-4393-b0de-aaf37d43fe69","type":"NodeGeneralizationVariantWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"language":"en_UK"},"generalizationOrigin":{"language":"en_US"},"generalizationCoverage":[{"language":"en_US"}]},"metadata":[]} +{"identifier":"6a8125af-fcfa-45e3-8b23-bb99ae36e33e","type":"NodePropertiesWereSet","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","originDimensionSpacePoint":{"language":"en_US"},"affectedDimensionSpacePoints":[{"language":"en_US"}],"propertyValues":{"title":{"value":"Home","type":"string"},"uriPathSegment":{"value":"home","type":"string"},"image":{"value":{"__flow_object_type":"Neos\\Media\\Domain\\Model\\ImageVariant","__identifier":"50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1"},"type":"Neos\\Media\\Domain\\Model\\ImageInterface"}}},"metadata":[]} +{"identifier":"8d7b8db3-9f48-494c-b7c7-5e94a830e7be","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"language":"en_US"},"peerOrigin":{"language":"da"},"peerCoverage":[{"language":"da"}]},"metadata":[]} +{"identifier":"ca5803cb-c243-48f9-9670-bf7deef64622","type":"NodePropertiesWereSet","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","originDimensionSpacePoint":{"language":"da"},"affectedDimensionSpacePoints":[{"language":"da"}],"propertyValues":{"title":{"value":"Hjem","type":"string"},"uriPathSegment":{"value":"home","type":"string"}}},"metadata":[]} +{"identifier":"425419f2-c507-4f84-acac-bae008eb4c01","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"language":"da"},"peerOrigin":{"language":"lv"},"peerCoverage":[{"language":"lv"}]},"metadata":[]} +{"identifier":"51c5ceca-360f-45b4-b6fb-b6aa8ed8c2ff","type":"NodePropertiesWereSet","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","originDimensionSpacePoint":{"language":"lv"},"affectedDimensionSpacePoints":[{"language":"lv"}],"propertyValues":{"title":{"value":"M\u0101jas","type":"string"},"uriPathSegment":{"value":"home","type":"string"}}},"metadata":[]} +{"identifier":"76ebb9af-137f-4da1-8ba3-3db36815819f","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"language":"lv"},"peerOrigin":{"language":"nl"},"peerCoverage":[{"language":"nl"}]},"metadata":[]} +{"identifier":"91744471-1590-4b7d-8907-749bf5d80a2c","type":"NodePropertiesWereSet","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","originDimensionSpacePoint":{"language":"nl"},"affectedDimensionSpacePoints":[{"language":"nl"}],"propertyValues":{"title":{"value":"Huis","type":"string"},"uriPathSegment":{"value":"home","type":"string"}}},"metadata":[]} +{"identifier":"899ef4e2-d6ab-4794-a24c-0ef2152d2bd5","type":"NodeGeneralizationVariantWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"language":"nl"},"generalizationOrigin":{"language":"de"},"generalizationCoverage":[{"language":"de"}]},"metadata":[]} +{"identifier":"ed48a226-9ea5-4439-bd3c-db8491649512","type":"NodePropertiesWereSet","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","originDimensionSpacePoint":{"language":"de"},"affectedDimensionSpacePoints":[{"language":"de"}],"propertyValues":{"title":{"value":"Startseite","type":"string"},"uriPathSegment":{"value":"home","type":"string"}}},"metadata":[]} +{"identifier":"297537f3-8ef7-408c-bf86-aed3f36e3dc9","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"64cdaa71-bdb1-4a07-a661-bb1787b8d077","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","sourceOrigin":{"language":"en_US"},"peerOrigin":{"language":"de"},"peerCoverage":[{"language":"de"},{"language":"nl"}]},"metadata":[]} +{"identifier":"c0b3f4e5-c3ff-4430-a906-a1f564fe1fd8","type":"NodeSpecializationVariantWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","sourceOrigin":{"language":"en_US"},"specializationOrigin":{"language":"en_UK"},"specializationCoverage":[{"language":"en_UK"}]},"metadata":[]} +{"identifier":"4414f130-d8fc-422c-b304-708c8fec2777","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","sourceOrigin":{"language":"en_UK"},"peerOrigin":{"language":"da"},"peerCoverage":[{"language":"da"}]},"metadata":[]} +{"identifier":"3bd5280c-f131-4401-bcb0-3dd09ce3bef9","type":"NodeSpecializationVariantWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","sourceOrigin":{"language":"de"},"specializationOrigin":{"language":"nl"},"specializationCoverage":[{"language":"nl"}]},"metadata":[]} +{"identifier":"4ffc3cc4-f657-4273-be53-88f4f74d3c62","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","sourceOrigin":{"language":"nl"},"peerOrigin":{"language":"lv"},"peerCoverage":[{"language":"lv"}]},"metadata":[]} +{"identifier":"fec825fe-47ab-4db7-8dcb-608c8530e74c","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","sourceOrigin":{"language":"lv"},"peerOrigin":{"language":"fr"},"peerCoverage":[{"language":"fr"}]},"metadata":[]} +{"identifier":"74255fc9-675a-4a7d-8d67-1e03cd9d4037","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"ce9e7dd2-2f7e-4cd7-94dc-e2dbd5bdec73","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeName":"node-g1gxvdbn8vq07","initialPropertyValues":{"uriPathSegment":{"value":"tree-search","type":"string"},"title":{"value":"Tree search","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"f0acc011-ec4f-42fc-b6ec-fde3f5f5581d","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"000b42ff-c9d3-4b5e-b6de-56d35832dc0e","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeName":"node-0t1w0st5k6ffr","initialPropertyValues":{"uriPathSegment":{"value":"create-new-nodes","type":"string"},"title":{"value":"Create new nodes","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"766f6f5c-700b-4698-8894-8f6b25c7160b","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"5d9a965c-884b-41af-9f21-ae305c2af2af","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeName":"node-8apiz7zen1sig","initialPropertyValues":{"uriPathSegment":{"value":"discarding","type":"string"},"title":{"value":"Discarding","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"5a8a66d2-15b1-4137-8ce7-8bb76a27fc20","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"af9db7c2-3cf0-4091-978e-1a0f81766242","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeName":"node-w0p249o10vma4","initialPropertyValues":{"uriPathSegment":{"value":"switching-dimensions","type":"string"},"title":{"value":"Switching dimensions","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"a49501ec-91bc-4172-a3a6-1e81daf81700","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f25d1518-60c2-4842-b2b0-bbd449697e77","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeName":"node-xel5da127kla5","initialPropertyValues":{"uriPathSegment":{"value":"select-boxes","type":"string"},"title":{"value":"Select Boxes","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"1b83da25-010b-447e-b621-b145eaa1c5cc","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"4fbd958a-3b24-4001-8342-5ceaf0750ffb","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeName":"node-knm2pltb5454z","initialPropertyValues":{"uriPathSegment":{"value":"tree-multiselect","type":"string"},"title":{"value":"Tree multiselect","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"866cec45-ae52-41f2-877e-3e533c0fc534","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"53c72be8-befb-409f-b2b6-ad54b68cbe05","nodeTypeName":"Neos.TestNodeTypes:Content.Headline","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","nodeName":"node-chdxek8m9mgp8","initialPropertyValues":{"title":{"value":"Content node to delete","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"9a11d10c-c3b6-41b7-9955-a66641b6e09a","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"d995d0af-2716-cbf0-a9a0-4547c87980d1","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"000b42ff-c9d3-4b5e-b6de-56d35832dc0e","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"2d239a21-4201-4b9c-9ddd-cd5fa936c650","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"edee62d3-4561-4c0c-bce0-41324b0df5db","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"000b42ff-c9d3-4b5e-b6de-56d35832dc0e","nodeName":"node-32bltfl4ugqi1","initialPropertyValues":{"uriPathSegment":{"value":"link-target","type":"string"},"title":{"value":"Link target","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"80f77eb0-d2d9-4d1b-8f27-7d8167426fcd","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"794b2be9-805d-fe98-e173-ee015811d3fc","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"edee62d3-4561-4c0c-bce0-41324b0df5db","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"6c9ed736-f124-43d9-a897-1d73abf279ec","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"9344756a-a5d1-9de0-0627-a701b27e62bf","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"5d9a965c-884b-41af-9f21-ae305c2af2af","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"26f906ac-12bd-4807-999a-f4f228c93a81","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"6c66e888-70ba-4e6c-838d-a13b642505ac","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"5d9a965c-884b-41af-9f21-ae305c2af2af","nodeName":"node-bezmi9v7mq8gm","initialPropertyValues":{"uriPathSegment":{"value":"node-to-delete","type":"string"},"title":{"value":"Node to delete","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"d3569ac5-f207-4559-864e-0ba01eed6382","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"868eb7da-ab60-15ef-2dc0-472dd8c346cd","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"6c66e888-70ba-4e6c-838d-a13b642505ac","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"21642ec4-9e43-49ac-bd71-a27b44e2813b","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f4be0477-85ad-4e7b-bc6d-b4f8d5da448c","nodeTypeName":"Neos.TestNodeTypes:Content.Headline","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"868eb7da-ab60-15ef-2dc0-472dd8c346cd","nodeName":"node-1jek82tofuzch","initialPropertyValues":{"title":{"value":"

I'll be deleted<\/h1>","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"0a3ae1e5-cd04-40f6-8c19-5aec91064320","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"487ef58b-7d6d-9e3f-b6ee-3552784ac0eb","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"ce9e7dd2-2f7e-4cd7-94dc-e2dbd5bdec73","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"c467d473-c42c-418f-9b42-9a04502e180a","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"ae7baddc-656a-4e57-9886-17d8783dae65","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"ce9e7dd2-2f7e-4cd7-94dc-e2dbd5bdec73","nodeName":"node-r6au40dkxh5k6","initialPropertyValues":{"uriPathSegment":{"value":"not-searched-page","type":"string"},"title":{"value":"Not searched page","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"a6969708-7689-42e9-ab39-eb869fd7891a","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"ecb3c490-e4ce-450b-ba59-584615d3ef81","nodeTypeName":"Neos.Neos:Shortcut","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"ce9e7dd2-2f7e-4cd7-94dc-e2dbd5bdec73","nodeName":"node-2oekw9xt2aqzh","initialPropertyValues":{"uriPathSegment":{"value":"not-searched-shortcut","type":"string"},"targetMode":{"value":"firstChildNode","type":"string"},"title":{"value":"Not searched shortcut","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"75190929-8ead-4d22-9e4c-57f9b5f52c5e","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"18b037dc-c06c-4d96-a991-893256a32e89","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"ce9e7dd2-2f7e-4cd7-94dc-e2dbd5bdec73","nodeName":"node-a8hbzgg4vij8o","initialPropertyValues":{"uriPathSegment":{"value":"searchme-page","type":"string"},"title":{"value":"Searchme page","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"d8bcef2d-d054-44ae-9c92-a56070954add","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"5a056a16-1bd6-4fca-b586-108e2130d55a","nodeTypeName":"Neos.Neos:Shortcut","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"ce9e7dd2-2f7e-4cd7-94dc-e2dbd5bdec73","nodeName":"node-2as0mtmis37be","initialPropertyValues":{"uriPathSegment":{"value":"searchme-shortcut","type":"string"},"targetMode":{"value":"firstChildNode","type":"string"},"title":{"value":"Searchme shortcut","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"1078453a-67a7-40b7-abde-6d4fa1e3ce85","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"eb217a26-d864-d456-822d-7476cef3e215","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"18b037dc-c06c-4d96-a991-893256a32e89","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"47f38ec7-69dc-4ab9-937c-b58b2450ffe5","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"e22df8b3-cc42-b6a1-184a-7778d1bf2750","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"ae7baddc-656a-4e57-9886-17d8783dae65","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"61ebdba4-8097-43be-910d-f44e809e1111","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"74263f87-2e7c-c916-c122-6a6cf4704f22","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"4fbd958a-3b24-4001-8342-5ceaf0750ffb","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"ddfa4633-add1-4bb4-86be-033cfd7fce84","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"1efe592f-2e2f-4737-b212-bbb42626e848","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"4fbd958a-3b24-4001-8342-5ceaf0750ffb","nodeName":"node-18qsaeidy6765","initialPropertyValues":{"uriPathSegment":{"value":"a","type":"string"},"title":{"value":"MultiA","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"7d859cb6-bb96-481b-999c-1f0e0f1914c1","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"5b0d6ac0-40ab-47e8-b79e-39de6c0700df","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"4fbd958a-3b24-4001-8342-5ceaf0750ffb","nodeName":"node-e8tw6sparbtp3","initialPropertyValues":{"uriPathSegment":{"value":"b","type":"string"},"title":{"value":"MultiB","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"7039e6be-dea2-48bb-abc6-605fdb7be762","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"84eb0340-ba34-4fdb-98b1-da503f967121","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"4fbd958a-3b24-4001-8342-5ceaf0750ffb","nodeName":"node-oml0cxaompt29","initialPropertyValues":{"uriPathSegment":{"value":"c","type":"string"},"title":{"value":"MultiC","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"30c8c801-884e-46f1-890c-8c9ee331300b","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f6bf1a78-9e2b-45ba-887c-9b7e43890a44","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"4fbd958a-3b24-4001-8342-5ceaf0750ffb","nodeName":"node-szu9u5yzpleck","initialPropertyValues":{"uriPathSegment":{"value":"d","type":"string"},"title":{"value":"MultiD","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"434cc297-b87c-43a9-b3c8-125a4147b8af","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"41dbc005-0327-8a86-0f98-8531112577b8","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"1efe592f-2e2f-4737-b212-bbb42626e848","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"2fab7955-21fe-421d-9809-64e21ca6c5b9","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"2969680f-75ff-13b6-efbd-f5a01fbb73e5","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"5b0d6ac0-40ab-47e8-b79e-39de6c0700df","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"a061f2ae-6fdd-49a4-ae2c-3f6e9ba57fdc","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"2ff43bf3-a953-d69d-0103-3ce80568e642","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"84eb0340-ba34-4fdb-98b1-da503f967121","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"7345ce26-df70-45c9-b464-f1d6c6d86959","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f59c6680-06a4-4bc5-e563-9605bd4add99","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"f6bf1a78-9e2b-45ba-887c-9b7e43890a44","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"afb6efc4-7688-4d2a-a0e1-7c9ac53616ec","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"e91e184f-eb71-4b54-90dc-e8d8dd997f51","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"af9db7c2-3cf0-4091-978e-1a0f81766242","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"d483b7ad-1cc0-47e1-b70c-93906c060ae3","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"45270070-0d7c-4a89-90a8-a43ef454edf1","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"af9db7c2-3cf0-4091-978e-1a0f81766242","nodeName":"node-8ws6hkn4o36q1","initialPropertyValues":{"uriPathSegment":{"value":"translated-page","type":"string"},"title":{"value":"Translated page","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"9f60f1f3-b053-4854-9a04-8569b00f7649","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"555c9f80-7682-4916-a4c3-851ab5ea0559","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"af9db7c2-3cf0-4091-978e-1a0f81766242","nodeName":"node-f8e3ze7jvbxkl","initialPropertyValues":{"uriPathSegment":{"value":"untranslated-page","type":"string"},"title":{"value":"Untranslated page","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"01b8a28e-a2ed-4f8f-bad9-1354965a2d8c","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"d1d3bfdc-ce6a-cf2e-4eeb-02c11bbe87f4","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"45270070-0d7c-4a89-90a8-a43ef454edf1","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"c43fa247-68c4-4dd9-88f3-15e169680bfc","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"a54789f4-26df-de1d-c5dc-18a15556b40b","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"555c9f80-7682-4916-a4c3-851ab5ea0559","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"a30c607a-8767-44c7-b2a6-3d0b97bd478c","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"1fd64db3-c35f-4604-ad25-de0ef6d2bb32","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"f25d1518-60c2-4842-b2b0-bbd449697e77","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"c4a26082-8fac-4f7b-bad8-d07bfa68e9dd","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"3938292e-bf62-472a-a701-baf6e9ff395f","nodeTypeName":"Neos.TestNodeTypes:Document.SelectBoxTestPage.OpensAboveInInspector","originDimensionSpacePoint":{"language":"en_US"},"coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"}],"parentNodeAggregateId":"f25d1518-60c2-4842-b2b0-bbd449697e77","nodeName":"node-hg78tr7bvmmn4r","initialPropertyValues":{"uriPathSegment":{"value":"select-box-opens-above-in-inspector","type":"string"},"title":{"value":"SelectBox opens above in Inspector","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} diff --git a/Tests/IntegrationTests/TestDistribution/composer.json b/Tests/IntegrationTests/TestDistribution/composer.json index 41fc86012c..c55b71c7b4 100644 --- a/Tests/IntegrationTests/TestDistribution/composer.json +++ b/Tests/IntegrationTests/TestDistribution/composer.json @@ -9,17 +9,19 @@ "neos/composer-plugin": true } }, - "minimum-stability": "dev", "require": { - "neos/neos-ui": "8.3.x-dev", - "neos/fusion-afx": "*", + "neos/flow-development-collection": "9.0.x-dev as 9.0", + + "neos/neos-development-collection": "9.0.x-dev as 9.0", + "neos/eventstore": "dev-main", + "neos/eventstore-doctrineadapter": "dev-main", + + "neos/neos-ui": "9.0.x-dev as 9.0", + "neos/neos-ui-compiled": "9.0.x-dev as 9.0", + "neos/test-site": "@dev", "neos/test-nodetypes": "@dev" }, - "require-dev": { - "neos/buildessentials": "@dev", - "phpunit/phpunit": "^8.1" - }, "repositories": { "distribution": { "type": "path", diff --git a/Tests/IntegrationTests/docker-compose.yaml b/Tests/IntegrationTests/docker-compose.yaml index 51125de99a..562d3c777e 100644 --- a/Tests/IntegrationTests/docker-compose.yaml +++ b/Tests/IntegrationTests/docker-compose.yaml @@ -2,7 +2,7 @@ version: "3.4" services: php: - image: thecodingmachine/php:8.0-v4-cli-node16 + image: thecodingmachine/php:8.2-v4-cli-node16 command: tail -f /dev/null ports: - 8081:8081 @@ -14,7 +14,7 @@ services: COMPOSER_CACHE_DIR: /home/circleci/.composer/cache db: - image: mysql:8 + image: mariadb:10.4 environment: MYSQL_DATABASE: neos MYSQL_ROOT_PASSWORD: not_a_real_password diff --git a/Tests/IntegrationTests/e2e-docker.sh b/Tests/IntegrationTests/e2e-docker.sh index 5dbb873c8d..1034a64817 100755 --- a/Tests/IntegrationTests/e2e-docker.sh +++ b/Tests/IntegrationTests/e2e-docker.sh @@ -85,12 +85,19 @@ for fixture in $(pwd)/Tests/IntegrationTests/Fixtures/*/; do composer reinstall neos/test-site ./flow flow:cache:flush --force ./flow flow:cache:warmup - ./flow configuration:show --path Neos.ContentRepository.contentDimensions + ./flow configuration:show --path Neos.ContentRepositoryRegistry.contentRepositories.default.contentDimensions if ./flow site:list | grep -q 'Node name'; then ./flow site:prune '*' fi - ./flow site:import --package-key=Neos.TestSite + #./flow site:import --package-key=Neos.TestSite + ./flow cr:setup + ./flow site:create neos-test-site Neos.TestSite Neos.TestNodeTypes:Document.Page + # TODO: Replace with "--assume-yes" flag once "./flow cr:prune" has one + printf "y\n" | ./flow cr:prune + echo ./flow cr:import --path ./DistributionPackages/Neos.TestSite/Resources/Private/Content + ./flow cr:import --path ./DistributionPackages/Neos.TestSite/Resources/Private/Content + echo Done ./flow resource:publish BASH From 6e8e0c95ae28c625b736cbe1b67276f1b74ae42d Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Fri, 7 Jul 2023 14:17:22 +0200 Subject: [PATCH 02/25] TASK: Replace context paths with node addresses in E2E assertions --- .../IntegrationTests/Fixtures/1Dimension/discarding.e2e.js | 2 +- .../Fixtures/1Dimension/treeMultiselect.e2e.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/discarding.e2e.js b/Tests/IntegrationTests/Fixtures/1Dimension/discarding.e2e.js index ec99d3640c..40aa73ad75 100644 --- a/Tests/IntegrationTests/Fixtures/1Dimension/discarding.e2e.js +++ b/Tests/IntegrationTests/Fixtures/1Dimension/discarding.e2e.js @@ -38,7 +38,7 @@ test('Discarding: create multiple nodes nested within each other and then discar .expect(ReactSelector('Provider').getReact(({props}) => { const reduxState = props.store.getState(); return reduxState.cr.nodes.documentNode; - })).eql('/sites/neos-test-site@user-admin;language=en_US', 'After discarding we are back to the main page'); + })).eql('user-admin__eyJsYW5ndWFnZSI6ImVuX1VTIn0=__f676459d-ca77-44bc-aeea-44114814c279', 'After discarding we are back to the main page'); }); test('Discarding: create a document node and then discard it', async t => { diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/treeMultiselect.e2e.js b/Tests/IntegrationTests/Fixtures/1Dimension/treeMultiselect.e2e.js index 2714737440..885bfd3c00 100644 --- a/Tests/IntegrationTests/Fixtures/1Dimension/treeMultiselect.e2e.js +++ b/Tests/IntegrationTests/Fixtures/1Dimension/treeMultiselect.e2e.js @@ -26,7 +26,7 @@ test('Move multiple nodes via toolbar', async t => { .expect(ReactSelector('Provider').getReact(({props}) => { const reduxState = props.store.getState(); return reduxState.cr.nodes.documentNode; - })).eql('/sites/neos-test-site/node-knm2pltb5454z/node-18qsaeidy6765/node-e8tw6sparbtp3@user-admin;language=en_US', 'Node B\'s context path changed'); + })).eql('user-admin__eyJsYW5ndWFnZSI6ImVuX1VTIn0=__5b0d6ac0-40ab-47e8-b79e-39de6c0700df', 'Node B\'s node address changed'); await t.click(Page.getTreeNodeButton('Home')) }); @@ -43,7 +43,7 @@ test('Move multiple nodes via DND, CMD-click', async t => { .expect(ReactSelector('Provider').getReact(({props}) => { const reduxState = props.store.getState(); return reduxState.cr.nodes.documentNode; - })).eql('/sites/neos-test-site/node-knm2pltb5454z/node-18qsaeidy6765/node-e8tw6sparbtp3@user-admin;language=en_US', 'Node B\'s context path changed'); + })).eql('user-admin__eyJsYW5ndWFnZSI6ImVuX1VTIn0=__5b0d6ac0-40ab-47e8-b79e-39de6c0700df', 'Node B\'s node address changed'); await t.click(Page.getTreeNodeButton('Home')) }); @@ -60,6 +60,6 @@ test('Move multiple nodes via DND, SHIFT-click', async t => { .expect(ReactSelector('Provider').getReact(({props}) => { const reduxState = props.store.getState(); return reduxState.cr.nodes.documentNode; - })).eql('/sites/neos-test-site/node-knm2pltb5454z/node-18qsaeidy6765/node-oml0cxaompt29@user-admin;language=en_US', 'Node C\'s context path changed'); + })).eql('user-admin__eyJsYW5ndWFnZSI6ImVuX1VTIn0=__84eb0340-ba34-4fdb-98b1-da503f967121', 'Node C\'s node address changed'); await t.click(Page.getTreeNodeButton('Home')) }); From eb3182ff7e18da0e5dca156129684cc1ec09257f Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Sat, 8 Jul 2023 12:34:44 +0200 Subject: [PATCH 03/25] BUGFIX: Read .node-context-path innerHTML when parsing a node search result This fixes a regression introduced in: https://github.com/neos/neos-ui/pull/3173 --- .../neos-ui-backend-connector/src/Endpoints/index.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/neos-ui-backend-connector/src/Endpoints/index.ts b/packages/neos-ui-backend-connector/src/Endpoints/index.ts index 3babf7a40f..042bb7d60c 100644 --- a/packages/neos-ui-backend-connector/src/Endpoints/index.ts +++ b/packages/neos-ui-backend-connector/src/Endpoints/index.ts @@ -476,11 +476,16 @@ export default (routes: Routes) => { throw new Error('.node-frontend-uri does not contain a valid href attribut'); } - const nodeContextPath = d.querySelector('.node-context-path'); - if (!nodeContextPath) { + const nodeContextPathElement = d.querySelector('.node-context-path'); + if (!nodeContextPathElement) { throw new Error('.node-context-path is not found in the result'); } + const nodeContextPath = nodeContextPathElement.innerHTML.trim(); + if (!nodeContextPath) { + throw new Error('.node-context-path is empty'); + } + return { nodeFound: true, nodeFrontendUri, From f6923332edf5a125ab42ac9c56500b6604e0c1d1 Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Sat, 8 Jul 2023 16:31:57 +0200 Subject: [PATCH 04/25] BUGFIX: (9.0) Predict nodes that will be deleted through discard Using the `PendingChangesProjection` from Neos.Neos, which after https://github.com/neos/neos-development-collection/pull/4393 will track all nodes that have been newly created within the workspace that contains the change set that is being discarded. --- .../Service/WorkspaceService.php | 51 ++++++++++++++++++- .../Controller/BackendServiceController.php | 21 +++++--- .../Model/Feedback/Operations/RemoveNode.php | 20 ++++++-- .../TestDistribution/composer.json | 14 ++++- .../neos-ui-sagas/src/UI/ContentTree/index.js | 2 +- 5 files changed, 93 insertions(+), 15 deletions(-) diff --git a/Classes/ContentRepository/Service/WorkspaceService.php b/Classes/ContentRepository/Service/WorkspaceService.php index 7a55e24b05..a0e5622235 100644 --- a/Classes/ContentRepository/Service/WorkspaceService.php +++ b/Classes/ContentRepository/Service/WorkspaceService.php @@ -13,7 +13,7 @@ use Neos\ContentRepository\Core\ContentRepository; use Neos\ContentRepository\Core\Factory\ContentRepositoryId; -use Neos\ContentRepository\Core\Projection\ContentGraph\ContentSubgraphIdentity; +use Neos\ContentRepository\Core\Feature\WorkspacePublication\Command\DiscardIndividualNodesFromWorkspace; use Neos\ContentRepository\Core\Projection\ContentGraph\Node; use Neos\ContentRepository\Core\Projection\Workspace\Workspace; use Neos\Neos\FrontendRouting\NodeAddress; @@ -24,8 +24,8 @@ use Neos\Flow\Annotations as Flow; use Neos\Neos\Domain\Service\UserService as DomainUserService; use Neos\Neos\PendingChangesProjection\ChangeFinder; -use Neos\Neos\PendingChangesProjection\ChangeProjection; use Neos\Neos\Service\UserService; +use Neos\Neos\Ui\Domain\Model\Feedback\Operations\RemoveNode; /** * @Flow\Scope("singleton") @@ -156,6 +156,53 @@ public function getAllowedTargetWorkspaces(ContentRepository $contentRepository) return $workspacesArray; } + public function predictRemoveNodeFeedbackFromDiscardIndividualNodesFromWorkspaceCommand( + DiscardIndividualNodesFromWorkspace $command, + ContentRepository $contentRepository + ): array { + $workspace = $contentRepository->getWorkspaceFinder()->findOneByName($command->workspaceName); + if (is_null($workspace)) { + return Nodes::createEmpty(); + } + + $changeFinder = $contentRepository->projectionState(ChangeFinder::class); + $changes = $changeFinder->findByContentStreamId($workspace->currentContentStreamId); + + $handledNodes = []; + $result = []; + foreach ($changes as $change) { + if ($change->created) { + foreach ($command->nodesToDiscard as $nodeToDiscard) { + if (in_array($nodeToDiscard, $handledNodes)) { + continue; + } + + if ( + $nodeToDiscard->contentStreamId->equals($change->contentStreamId) + && $nodeToDiscard->nodeAggregateId->equals($change->nodeAggregateId) + && $nodeToDiscard->dimensionSpacePoint->equals($change->originDimensionSpacePoint) + ) { + $subgraph = $contentRepository->getContentGraph() + ->getSubgraph( + $nodeToDiscard->contentStreamId, + $nodeToDiscard->dimensionSpacePoint, + VisibilityConstraints::withoutRestrictions() + ); + + $childNode = $subgraph->findNodeById($nodeToDiscard->nodeAggregateId); + $parentNode = $subgraph->findParentNode($nodeToDiscard->nodeAggregateId); + if ($parentNode) { + $result[] = new RemoveNode($childNode, $parentNode); + $handledNodes[] = $nodeToDiscard; + } + } + } + } + } + + return $result; + } + private function getClosestDocumentNode(Node $node): ?Node { $subgraph = $this->contentRepositoryRegistry->subgraphForNode($node); diff --git a/Classes/Controller/BackendServiceController.php b/Classes/Controller/BackendServiceController.php index 37b09703a7..a4e73cc69f 100644 --- a/Classes/Controller/BackendServiceController.php +++ b/Classes/Controller/BackendServiceController.php @@ -294,18 +294,27 @@ public function discardAction(array $nodeContextPaths): void $nodeAddress->dimensionSpacePoint ); } - $contentRepository->handle( - DiscardIndividualNodesFromWorkspace::create( - $workspaceName, - NodeIdsToPublishOrDiscard::create(...$nodeIdentifiersToDiscard) - ) - )->block(); + + $command = DiscardIndividualNodesFromWorkspace::create( + $workspaceName, + NodeIdsToPublishOrDiscard::create(...$nodeIdentifiersToDiscard) + ); + $removeNodeFeedback = $this->workspaceService + ->predictRemoveNodeFeedbackFromDiscardIndividualNodesFromWorkspaceCommand( + $command, + $contentRepository + ); + + $contentRepository->handle($command)->block(); $success = new Success(); $success->setMessage(sprintf('Discarded %d node(s).', count($nodeContextPaths))); $updateWorkspaceInfo = new UpdateWorkspaceInfo($contentRepositoryId, $workspaceName); $this->feedbackCollection->add($success); + foreach ($removeNodeFeedback as $removeNode) { + $this->feedbackCollection->add($removeNode); + } $this->feedbackCollection->add($updateWorkspaceInfo); } catch (\Exception $e) { $error = new Error(); diff --git a/Classes/Domain/Model/Feedback/Operations/RemoveNode.php b/Classes/Domain/Model/Feedback/Operations/RemoveNode.php index 389d35989b..f068c2ccba 100644 --- a/Classes/Domain/Model/Feedback/Operations/RemoveNode.php +++ b/Classes/Domain/Model/Feedback/Operations/RemoveNode.php @@ -14,6 +14,7 @@ use Neos\ContentRepositoryRegistry\ContentRepositoryRegistry; use Neos\Flow\Annotations as Flow; use Neos\Neos\FrontendRouting\NodeAddressFactory; +use Neos\Neos\FrontendRouting\NodeAddress; use Neos\ContentRepository\Core\Projection\ContentGraph\Node; use Neos\Flow\Mvc\Controller\ControllerContext; use Neos\Neos\Ui\Domain\Model\AbstractFeedback; @@ -25,6 +26,10 @@ class RemoveNode extends AbstractFeedback protected Node $parentNode; + private NodeAddress $nodeAddress; + + private NodeAddress $parentNodeAddress; + /** * @Flow\Inject * @var ContentRepositoryRegistry @@ -37,6 +42,15 @@ public function __construct(Node $node, Node $parentNode) $this->parentNode = $parentNode; } + protected function initializeObject(): void + { + $contentRepository = $this->contentRepositoryRegistry->get($this->node->subgraphIdentity->contentRepositoryId); + $nodeAddressFactory = NodeAddressFactory::create($contentRepository); + + $this->nodeAddress = $nodeAddressFactory->createFromNode($this->node); + $this->parentNodeAddress = $nodeAddressFactory->createFromNode($this->parentNode); + } + public function getNode(): Node { return $this->node; @@ -87,11 +101,9 @@ public function isSimilarTo(FeedbackInterface $feedback) */ public function serializePayload(ControllerContext $controllerContext) { - $contentRepository = $this->contentRepositoryRegistry->get($this->node->subgraphIdentity->contentRepositoryId); - $nodeAddressFactory = NodeAddressFactory::create($contentRepository); return [ - 'contextPath' => $nodeAddressFactory->createFromNode($this->node)->serializeForUri(), - 'parentContextPath' => $nodeAddressFactory->createFromNode($this->parentNode)->serializeForUri() + 'contextPath' => $this->nodeAddress->serializeForUri(), + 'parentContextPath' => $this->parentNodeAddress->serializeForUri() ]; } } diff --git a/Tests/IntegrationTests/TestDistribution/composer.json b/Tests/IntegrationTests/TestDistribution/composer.json index c55b71c7b4..b23c99a6ce 100644 --- a/Tests/IntegrationTests/TestDistribution/composer.json +++ b/Tests/IntegrationTests/TestDistribution/composer.json @@ -6,7 +6,8 @@ "vendor-dir": "Packages/Libraries", "bin-dir": "bin", "allow-plugins": { - "neos/composer-plugin": true + "neos/composer-plugin": true, + "cweagans/composer-patches": true } }, "require": { @@ -20,7 +21,16 @@ "neos/neos-ui-compiled": "9.0.x-dev as 9.0", "neos/test-site": "@dev", - "neos/test-nodetypes": "@dev" + "neos/test-nodetypes": "@dev", + + "cweagans/composer-patches": "^1.7.3" + }, + "extra": { + "patches": { + "neos/neos-development-collection": { + "!!!FEATURE: (Neos.Neos) Track created nodes in PendingChangesProjection": "https://github.com/neos/neos-development-collection/pull/4393.patch" + } + } }, "repositories": { "distribution": { diff --git a/packages/neos-ui-sagas/src/UI/ContentTree/index.js b/packages/neos-ui-sagas/src/UI/ContentTree/index.js index a68d024ac1..adcdd4df6c 100644 --- a/packages/neos-ui-sagas/src/UI/ContentTree/index.js +++ b/packages/neos-ui-sagas/src/UI/ContentTree/index.js @@ -142,7 +142,7 @@ export function * watchCurrentDocument({globalRegistry, configuration}) { } const state = yield select(); - const childrenAreFullyLoaded = $get(['cr', 'nodes', 'byContextPath', contextPath, 'children'], state) + const childrenAreFullyLoaded = ($get(['cr', 'nodes', 'byContextPath', contextPath, 'children'], state) || []) .filter(childEnvelope => nodeTypesRegistry.hasRole(childEnvelope.nodeType, 'content') || nodeTypesRegistry.hasRole(childEnvelope.nodeType, 'contentCollection')) .every( childEnvelope => Boolean($get(['cr', 'nodes', 'byContextPath', $get('contextPath', childEnvelope)], state)) From 57a5bc1ddf33d2ac88abbf6174eece90df8de0cc Mon Sep 17 00:00:00 2001 From: Martin Ficzel Date: Sun, 9 Jul 2023 16:02:09 +0200 Subject: [PATCH 05/25] TASK: Replace usage of `Neos.Node.inBackend(node)` with `Neos.Backend.isEditMode(request) || Neos.Backend.isPreviewMode(request)` --- Resources/Private/Fusion/Prototypes/Page.fusion | 12 ++++++------ Resources/Private/Fusion/Prototypes/Shortcut.fusion | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Private/Fusion/Prototypes/Page.fusion b/Resources/Private/Fusion/Prototypes/Page.fusion index 61dedd0bc4..f9284ba163 100644 --- a/Resources/Private/Fusion/Prototypes/Page.fusion +++ b/Resources/Private/Fusion/Prototypes/Page.fusion @@ -19,7 +19,7 @@ prototype(Neos.Neos:Page) { @process.json = ${Json.stringify(value)} @process.wrapInJsObject = ${''} - @if.inBackend = ${Neos.Node.inBackend(documentNode)} + @if.inBackend = ${Neos.Backend.isEditMode(request) || Neos.Backend.isPreviewMode(request)} // We need to ensure the JS backend information is always up to date, especially // when child nodes change. Otherwise errors like the following might happen: @@ -35,11 +35,11 @@ prototype(Neos.Neos:Page) { entryIdentifier { jsBackendInfo = 'javascriptBackendInformation' documentNode = ${Neos.Caching.entryIdentifierForNode(documentNode)} - inBackend = ${Neos.Node.inBackend(documentNode)} + inBackend = ${Neos.Backend.isEditMode(request) || Neos.Backend.isPreviewMode(request)} } entryTags { 1 = ${Neos.Caching.nodeTag(documentNode)} - 2 = ${Neos.Node.inBackend(documentNode) ? Neos.Caching.descendantOfTag(documentNode) : null} + 2 = ${(Neos.Backend.isEditMode(request) || Neos.Backend.isPreviewMode(request)) ? Neos.Caching.descendantOfTag(documentNode) : null} } } } @@ -51,18 +51,18 @@ prototype(Neos.Neos:Page) { compiledResourcePackage = ${Neos.Ui.StaticResources.compiledResourcePackage()} sectionName = 'guestFrameApplication' - @if.inBackend = ${Neos.Node.inBackend(documentNode)} + @if.inBackend = ${Neos.Backend.isEditMode(request) || Neos.Backend.isPreviewMode(request)} } } neosBackendContainer = '
' neosBackendContainer.@position = 'before closingBodyTag' - neosBackendContainer.@if.inBackend = ${Neos.Node.inBackend(documentNode)} + neosBackendContainer.@if.inBackend = ${Neos.Backend.isEditMode(request) || Neos.Backend.isPreviewMode(request)} neosBackendNotification = Neos.Fusion:Template { @position = 'before closingBodyTag' templatePath = 'resource://Neos.Neos.Ui/Private/Templates/Backend/GuestNotificationScript.html' - @if.inBackend = ${Neos.Node.inBackend(documentNode)} + @if.inBackend = ${Neos.Backend.isEditMode(request) || Neos.Backend.isPreviewMode(request)} } @exceptionHandler = 'Neos\\Neos\\Ui\\Fusion\\ExceptionHandler\\PageExceptionHandler' diff --git a/Resources/Private/Fusion/Prototypes/Shortcut.fusion b/Resources/Private/Fusion/Prototypes/Shortcut.fusion index 69f3a7ea29..38e9ec8cdb 100644 --- a/Resources/Private/Fusion/Prototypes/Shortcut.fusion +++ b/Resources/Private/Fusion/Prototypes/Shortcut.fusion @@ -9,7 +9,7 @@ prototype(Neos.Neos:Page) { } @if { - inBackend = ${Neos.Node.inBackend(documentNode)} + inBackend = ${Neos.Backend.isEditMode(request) || Neos.Backend.isPreviewMode(request)} isShortcut = ${q(node).is('[instanceof Neos.Neos:Shortcut]')} } } From ad36bc75a5808c9e8b5fa090cb3aa9cfc2f29076 Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Mon, 10 Jul 2023 10:51:56 +0200 Subject: [PATCH 06/25] TASK: Make E2E tests work for 2Dimension fixture This includes the replacement of the 2Dimension site export with an equivalent ESCR event export. Also, as a temporary fix, https://github.com/neos/neos-development-collection/pull/4395 was added as a patch. --- .../SitePackage/Configuration/Settings.yaml | 188 +++++------ .../ee3d239e-48b0-4f99-90be-054301b91792.json | 14 + .../50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json | 20 ++ .../6791d1beca5fa4ab78f1b2b1a44d43692f99b5dc | Bin 63808 -> 0 bytes .../Resources/Private/Content/Sites.xml | 315 ------------------ .../Resources/Private/Content/events.jsonl | 29 ++ .../TestDistribution/composer.json | 3 +- 7 files changed, 153 insertions(+), 416 deletions(-) create mode 100644 Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json create mode 100644 Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json delete mode 100644 Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Resources/6791d1beca5fa4ab78f1b2b1a44d43692f99b5dc delete mode 100644 Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Sites.xml create mode 100644 Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/events.jsonl diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Configuration/Settings.yaml b/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Configuration/Settings.yaml index 4881edaed5..3adeb77ff5 100644 --- a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Configuration/Settings.yaml +++ b/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Configuration/Settings.yaml @@ -1,103 +1,91 @@ Neos: - ContentRepository: - contentDimensions: - 'country': - default: 'deu' - defaultPreset: 'deu' - label: 'Country' - icon: 'icon-globe' - presets: - 'deu': - label: 'Germany' - values: ['deu'] - uriSegment: 'deu' - 'aut': - label: 'Austria' - values: ['aut', 'deu'] - uriSegment: 'aut' - 'lux': - label: 'Luxembourg' - values: ['lux', 'deu'] - uriSegment: 'lux' - 'dnk': - label: 'Denmark' - values: ['dnk'] - uriSegment: 'dnk' - 'language': - label: 'Language' - icon: icon-language - default: en_US - defaultPreset: en_US - presets: - en_US: - label: 'English (US)' + ContentRepositoryRegistry: + contentRepositories: + default: + contentDimensions: + country: + label: 'Country' + icon: 'icon-globe' values: - - en_US - uriSegment: en - constraints: - country: - '*': false - 'deu': true - 'aut': true - en_UK: - label: 'English (UK)' + 'deu': + label: 'Germany' + specializations: + 'aut': + label: 'Austria' + 'lux': + label: 'Luxembourg' + 'dnk': + label: 'Denmark' + + 'language': + label: 'Language' + icon: icon-language values: - - en_UK - - en_US - uriSegment: uk - constraints: - country: - '*': false - 'deu': true - 'aut': true - de: - label: German - values: - - de - uriSegment: de - constraints: - country: - '*': false - 'deu': true - 'aut': true - 'lux': true - fr: - label: French - values: - - fr - uriSegment: fr - constraints: - country: - '*': false - 'deu': true - 'aut': true - nl: - label: Dutch - values: - - nl - - de - uriSegment: nl - constraints: - country: - '*': false - 'deu': true - 'aut': true - da: - label: Danish - values: - - da - uriSegment: da - constraints: - country: - '*': false - 'dnk': true - lv: - label: Latvian - values: - - lv - uriSegment: lv - constraints: - country: - '*': false - 'deu': true - 'aut': true + 'en_US': + label: 'English (US)' + constraints: + 'country': + '*': false + 'deu': true + 'aut': true + specializations: + 'en_UK': + label: 'English (UK)' + 'de': + label: German + constraints: + 'country': + '*': false + 'deu': true + 'aut': true + 'lux': true + 'fr': + label: French + constraints: + 'country': + '*': false + 'deu': true + 'aut': true + 'nl': + label: Dutch + constraints: + 'country': + '*': false + 'deu': true + 'aut': true + 'da': + label: Danish + constraints: + 'country': + '*': false + 'dnk': true + 'lv': + label: Latvian + constraints: + 'country': + '*': false + 'deu': true + 'aut': true + Neos: + sites: + '*': + contentDimensions: + resolver: + factoryClassName: Neos\Neos\FrontendRouting\DimensionResolution\Resolver\UriPathResolverFactory + options: + segments: + - dimensionIdentifier: 'country' + dimensionValueMapping: + 'deu': 'deu' + 'aut': 'aut' + 'lux': 'lux' + 'dnk': 'dnk' + - dimensionIdentifier: 'language' + dimensionValueMapping: + 'en_US': 'en' + 'en_UK': 'uk' + 'de': 'de' + 'fr': 'fr' + 'nl': 'nl' + 'da': 'da' + 'lv': 'lv' diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json b/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json new file mode 100644 index 0000000000..e5d089b54b --- /dev/null +++ b/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json @@ -0,0 +1,14 @@ +{ + "identifier": "ee3d239e-48b0-4f99-90be-054301b91792", + "type": "IMAGE", + "title": "", + "copyrightNotice": "", + "caption": "", + "assetSourceIdentifier": "neos", + "resource": { + "filename": "neos_primary.png", + "collectionName": "persistent", + "mediaType": "image\/png", + "sha1": "aac28f51e5ca842e2646e88e7d242ac3c27e1f25" + } +} \ No newline at end of file diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json b/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json new file mode 100644 index 0000000000..af47865fee --- /dev/null +++ b/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json @@ -0,0 +1,20 @@ +{ + "identifier": "50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1", + "originalAssetIdentifier": "ee3d239e-48b0-4f99-90be-054301b91792", + "name": "", + "width": 126, + "height": 126, + "presetIdentifier": null, + "presetVariantName": null, + "imageAdjustments": [ + { + "type": "CROP_IMAGE", + "properties": { + "x": 328, + "y": 0, + "width": 126, + "height": 126 + } + } + ] +} \ No newline at end of file diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Resources/6791d1beca5fa4ab78f1b2b1a44d43692f99b5dc b/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Resources/6791d1beca5fa4ab78f1b2b1a44d43692f99b5dc deleted file mode 100644 index 49b2fb44034429c196e9678d86be7c1983a05470..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63808 zcmeHP&2J+~6?Yr24oKsKf54i5VEFw!)y7WSU9Z~xVOQ0YUbV5rQeYDfb@9HZ*yz$ysU#nCqHy*ru|0lTakiYar{JeVOPaos*<*j#r{_9F*;UDC= zKfJZ@wMr$ZJh;F7-urWv@BZeWyK^sJzJ#17*D^5gTEITuR~hiYJ6Z`Icn`dz8E`ag zKjS^{j%L8ou>Fkpz&n}&N5l3r-UIJw1{@9B&v*~KqZx2CY(L{Y@Q!A{(XjoD_rT|y zfscQG`OD~CfP5`^?WP&OX&4@O(~Man?}4`j zNYgMp@TM8FMBW2$36Q2?c;HPlW{JE9-Vz{9!|=eHX3P?K54#ybl97xIkz zTi^I`75ZynUKhvMI!Al=-~ai0YfQg0&B#}PV9CtcP4IPkj)o2y`QkM-W%_T>l;a`1 zSq0PiTVNBqf^Z9b3O+_~U0kgtH8C0pa2Xte7r;__0l_x-2;4%hcrT`jfmhDgVR0LL zM{HRpcmlB_1l5#@&xRCo7Q$2JYb8UEpF!7Sa8oj2QUk95r}JB2lS+lSF>xhmg7+jr z8EY?S0CE<<)B!k4z^{AHm0%y7n5$I4BLIT^AvkZqVPc3_0Gj~+c&K#-J|JfexJl59 z%2}@fkgMHM=`jLcRqPWeS{kLSz_v5kdN?byA9-WW)(Xtepeb$v>&R7muyKCyL(;vf z*bB&%4LaSV50~&M6JIgTLX7I za7_!HAy@b4jP^Nx!iwcG(*pBZy#wa+dT+^r-VmQj0eBG{f?1uW^ccEsL+{AF%v4!c z^6)8uE)&qXC-dxb1a2dq4z5F_a#lkl^Hm3%o)@UQM~O2YhSKa!1bYu`{2Z>5#elZK zx4XJipT z5v%G5EFo6!E}Y+&2%E~l7Z$>f!MH{E(l(IKTogVZKu2(bCoECRM8F2xKVy^@9m80n6wRg zd6-^@o=4!1aNiuIb7-lD)2vj<5>Ego-kU}_l+*_Q0`y;iC55?+pj(hFl;C3sgQps! zr5{SK&v@=lI^vR>`7)(5%6p{jsH2FeX!xKJcj21~luIC>mc^ z0PwzWf^8;kS73Na%|3x>;UYod7OxrX1CMse4B_5%d`(B;AK}A3jGhS$OJWkJ$y{VH zbB%@yd%&xip_}boUN;T(=PAwujE*?#1D#OD{at~+2K=fD4Owl3|pCqwm?e~d5;Ra@XY2eSpcnwbK z9*=T+?i3_wtcaRj&&CS8>bOQA;OKV!!Uo61rB#DSFc|Cu@*r0dNJ#{qQ&U z<{Lk{gu$c}{S_+s>xMxTDvm_G)EMl)jG&Rrv>SdsfkFbBmd-Gct8GhoXcXJwOBqR^ zQ&ERMrkt3dr34=(t6IYFbX@>z9pH0tTJRZDFD~fe<8%wm6>j1}(7uhMjNvlVq&vLk z7F-74N4_zJ6~&c{ziz%6y$gV%;CX^)om1G8oOvMnf13O0`+xZ@H+>tZHO)b=8sOg} zFsE@=bPI|$z(=SAzLk0a4y4L$0bUw!X>tI+3FACG9p>OfR0QJ31rK}msG&TS}wj#~b2!W6$_zRJNQw*hVe;V9j<03VDBZra<_ z3b2nWw*Y?m@CjJ=)uc&SJRzO}{KoY`l4E{web5wso&_Hh(+2R{5a@ji1fUpC2wqiJ z0yqghhRzCXG$SRh0H5V7igK6R6##Xhys5YX&}z63!7PN{gFddNMDV%Av^bDU{TXi( zD6OFcmDzP67#?7Fs!gI!Qs=byaWw#QOSlJLZ-V(~n5LNd3xeK(kHB+@NhAn|i2~(z z)&=IZF$#1{g$TgslR*=F7Y^}UaA@EdC&)JC3H&*4G{hxlT4`C}*r`Bf=0pHKSAumo z&H|9G01XDp-`WJYKIex7n#$kYsAcOCekUG&kes=M*sSS7KAs?$H9RbVqy5&Dz}I{HsCwK&Df)a=(`$q1IY)RP{+x+MPW?G1?%#dm%vFnJ`9u}Nf8 z5KJusz9|sqE38v9>*325eAb=jUtktUViSZv8zP9e1y5gSysh?thj15yhZ6R|?Ay`10R3>+F#8()PX*t=Hj8jcV3uEga8)af;4A;0yHSDzfzD>X2$UcX z3A(+4qWmhb!J8sU+1wD=yn;-rGatV4F>3|PTotxr!d3vAx^qx_2zWI^B+EZ^7YjZD z;{Gmq5}|MWPXVRPb_Mhr9Z|%;tl+D))u$X7m`OqKFM+4v>_fuA@gt%4YmS~l% zX!c0_`2?U#9&aSNjAh_&1B1pDC|6VdDe|$gV!;5|u0iZvAbNXf#t#fw$NjT`&q=qe z>F<1>;jnY%W?JxY{-hBkDxyl=zE63>x`W7 z96X?i&PwSFg1b=Mk`5Rp2ipXkOP1si7pb_y4gYUTH)<&Is(`$JO_O|awcLZx?MZxv z?JbPwRw%LE`xjzkfu|!W!RJtda11_@76EL9kY5GY!Meif0sYT-)7?V%-&0k*1;XRZjiG+&(UcOhR%1fBvDfY0F(F|aPUt*&gR<27}?!-kZ^ zB6}!JSV|k>VaQhl!sGUMi5?a)^E8;N!EsUEOjg5aeEP{0T^EeX7nk7;oooU9 zL!i^182HFJ1XRa8Xa7RfR`8WeJ0FQ!1=~$!4*3c(kQ1h?)iMS;12G1kgH$zd<8}*N zQ~_}BGKL`tzr;cLB7cynuNIrnm^qgYhHe8Suc%b7hsJ z2i__;<-vI1<+-v-(gSZ5obq5i@bX+)CFy~;3Ql=29(Z}KtdjJ=TLq^)7!SNWS5`@S z;H`pF9*hTGo-3;)J@8h+DG$a2FVB@#k{)=g;FJgBf$!&P{qujlUa5TLj}PuIzt?Yc z;>H(&6EMev^uWh+;zWxF-U*oFL3-fhIdP)J1MdXP@gP0$@tio(;(>Pp=6H}E_;^m7 zXz{>10dqV^4}3f)PPBO7oq#zWqz68p6DL}3|M#7@e)0PE-eIs0ez0=?Z{Kfx^gk>S BXl?)i diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Sites.xml b/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Sites.xml deleted file mode 100644 index 36d80113ab..0000000000 --- a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Sites.xml +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/events.jsonl b/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/events.jsonl new file mode 100644 index 0000000000..a7ecb9c06e --- /dev/null +++ b/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/events.jsonl @@ -0,0 +1,29 @@ +{"identifier":"0ebdfc06-3698-4ddb-83f5-109023213b84","type":"ContentStreamWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b"},"metadata":[]} +{"identifier":"55ea0055-eda8-4077-b3b0-2c2d599a8f27","type":"RootNodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"2fbc3faf-663a-4ef0-b586-7b2c1c7fd342","nodeTypeName":"Neos.Neos:Sites","coveredDimensionSpacePoints":[{"country":"deu","language":"en_US"},{"country":"deu","language":"en_UK"},{"country":"deu","language":"de"},{"country":"deu","language":"fr"},{"country":"deu","language":"nl"},{"country":"deu","language":"lv"},{"country":"aut","language":"en_US"},{"country":"aut","language":"en_UK"},{"country":"aut","language":"de"},{"country":"aut","language":"fr"},{"country":"aut","language":"nl"},{"country":"aut","language":"lv"},{"country":"lux","language":"en_UK"},{"country":"lux","language":"de"},{"country":"dnk","language":"en_UK"},{"country":"dnk","language":"da"}],"nodeAggregateClassification":"root"},"metadata":[]} +{"identifier":"a9fdb629-97ce-4321-bbec-a1dbf27530fd","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"country":"dnk","language":"da"},"coveredDimensionSpacePoints":[{"country":"dnk","language":"da"}],"parentNodeAggregateId":"2fbc3faf-663a-4ef0-b586-7b2c1c7fd342","nodeName":"neos-test-site","initialPropertyValues":{"title":{"value":"Home","type":"string"},"uriPathSegment":{"value":"home","type":"string"},"image":{"value":{"__flow_object_type":"Neos\\Media\\Domain\\Model\\ImageVariant","__identifier":"50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1"},"type":"Neos\\Media\\Domain\\Model\\ImageInterface"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"06ce4e00-bede-4d76-a6b9-02c646ce933b","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"country":"dnk","language":"da"},"peerOrigin":{"country":"deu","language":"lv"},"peerCoverage":[{"country":"deu","language":"lv"},{"country":"aut","language":"lv"}]},"metadata":[]} +{"identifier":"c8b2be8f-fd74-4ea5-b2f8-35a3876d11a9","type":"NodePropertiesWereSet","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","originDimensionSpacePoint":{"country":"deu","language":"lv"},"affectedDimensionSpacePoints":[{"country":"deu","language":"lv"},{"country":"aut","language":"lv"}],"propertyValues":{"title":{"value":"M\u0101jas","type":"string"},"uriPathSegment":{"value":"home","type":"string"}}},"metadata":[]} +{"identifier":"c2c89695-2e12-41ac-bc4a-9b197b67a6f8","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"country":"deu","language":"lv"},"peerOrigin":{"country":"deu","language":"en_US"},"peerCoverage":[{"country":"deu","language":"en_US"},{"country":"aut","language":"en_US"},{"country":"deu","language":"en_UK"},{"country":"aut","language":"en_UK"},{"country":"lux","language":"en_UK"}]},"metadata":[]} +{"identifier":"9a7f0b96-edf3-43f0-95ab-41dc553e6238","type":"NodePropertiesWereSet","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","originDimensionSpacePoint":{"country":"deu","language":"en_US"},"affectedDimensionSpacePoints":[{"country":"deu","language":"en_US"},{"country":"aut","language":"en_US"},{"country":"deu","language":"en_UK"},{"country":"aut","language":"en_UK"},{"country":"lux","language":"en_UK"}],"propertyValues":{"title":{"value":"Home","type":"string"},"uriPathSegment":{"value":"home","type":"string"},"image":{"value":{"__flow_object_type":"Neos\\Media\\Domain\\Model\\ImageVariant","__identifier":"50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1"},"type":"Neos\\Media\\Domain\\Model\\ImageInterface"}}},"metadata":[]} +{"identifier":"8895d087-a855-485b-a0c5-fc2bd0953468","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"country":"deu","language":"en_US"},"peerOrigin":{"country":"deu","language":"nl"},"peerCoverage":[{"country":"deu","language":"nl"},{"country":"aut","language":"nl"}]},"metadata":[]} +{"identifier":"b1c595ba-ecf2-48cf-bd58-b14b2823b878","type":"NodePropertiesWereSet","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","originDimensionSpacePoint":{"country":"deu","language":"nl"},"affectedDimensionSpacePoints":[{"country":"deu","language":"nl"},{"country":"aut","language":"nl"}],"propertyValues":{"title":{"value":"Huis","type":"string"},"uriPathSegment":{"value":"home","type":"string"}}},"metadata":[]} +{"identifier":"17735c4f-8a79-4224-87c7-31182ddb04b1","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"country":"deu","language":"nl"},"peerOrigin":{"country":"deu","language":"de"},"peerCoverage":[{"country":"deu","language":"de"},{"country":"aut","language":"de"},{"country":"lux","language":"de"}]},"metadata":[]} +{"identifier":"aa8cc064-78f1-4bfc-b781-9c1c0782b0a9","type":"NodePropertiesWereSet","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","originDimensionSpacePoint":{"country":"deu","language":"de"},"affectedDimensionSpacePoints":[{"country":"deu","language":"de"},{"country":"aut","language":"de"},{"country":"lux","language":"de"}],"propertyValues":{"title":{"value":"Startseite","type":"string"},"uriPathSegment":{"value":"home","type":"string"}}},"metadata":[]} +{"identifier":"acc19ed2-3409-4801-8579-7cefdd967908","type":"NodeSpecializationVariantWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"country":"deu","language":"en_US"},"specializationOrigin":{"country":"deu","language":"en_UK"},"specializationCoverage":[{"country":"deu","language":"en_UK"},{"country":"aut","language":"en_UK"},{"country":"lux","language":"en_UK"}]},"metadata":[]} +{"identifier":"406b7e68-d98d-4bd1-bf68-b728ab2b539f","type":"NodePropertiesWereSet","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","originDimensionSpacePoint":{"country":"deu","language":"en_UK"},"affectedDimensionSpacePoints":[{"country":"deu","language":"en_UK"},{"country":"aut","language":"en_UK"},{"country":"lux","language":"en_UK"}],"propertyValues":{"title":{"value":"Home","type":"string"},"uriPathSegment":{"value":"home","type":"string"},"image":{"value":{"__flow_object_type":"Neos\\Media\\Domain\\Model\\ImageVariant","__identifier":"50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1"},"type":"Neos\\Media\\Domain\\Model\\ImageInterface"}}},"metadata":[]} +{"identifier":"7075a98d-ebe8-4035-92b9-8dc3e9e09098","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"country":"deu","language":"en_UK"},"peerOrigin":{"country":"deu","language":"fr"},"peerCoverage":[{"country":"deu","language":"fr"},{"country":"aut","language":"fr"}]},"metadata":[]} +{"identifier":"5cbcac8a-35e1-47e5-a55c-3392ddeb0ff3","type":"NodePropertiesWereSet","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","originDimensionSpacePoint":{"country":"deu","language":"fr"},"affectedDimensionSpacePoints":[{"country":"deu","language":"fr"},{"country":"aut","language":"fr"}],"propertyValues":{"title":{"value":"Accueil","type":"string"},"uriPathSegment":{"value":"home","type":"string"}}},"metadata":[]} +{"identifier":"a4a517b0-cc81-4840-9fb4-8dc501e57093","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"country":"deu","language":"lv"},"coveredDimensionSpacePoints":[{"country":"deu","language":"lv"},{"country":"aut","language":"lv"}],"parentNodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"bee965e3-c5e9-401d-ae17-cc21699b4f1d","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","sourceOrigin":{"country":"deu","language":"lv"},"peerOrigin":{"country":"deu","language":"fr"},"peerCoverage":[{"country":"deu","language":"fr"},{"country":"aut","language":"fr"}]},"metadata":[]} +{"identifier":"68479aef-43d6-4c9b-9af6-5e582c6fbcdf","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","sourceOrigin":{"country":"deu","language":"fr"},"peerOrigin":{"country":"deu","language":"en_US"},"peerCoverage":[{"country":"deu","language":"en_US"},{"country":"aut","language":"en_US"},{"country":"deu","language":"en_UK"},{"country":"aut","language":"en_UK"},{"country":"lux","language":"en_UK"}]},"metadata":[]} +{"identifier":"2c399044-3a08-4465-ae49-98486029dc8d","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","sourceOrigin":{"country":"deu","language":"en_US"},"peerOrigin":{"country":"dnk","language":"da"},"peerCoverage":[{"country":"dnk","language":"da"}]},"metadata":[]} +{"identifier":"6b9abd14-e993-49c7-a255-d32024fc6e8b","type":"NodeSpecializationVariantWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","sourceOrigin":{"country":"deu","language":"en_US"},"specializationOrigin":{"country":"deu","language":"en_UK"},"specializationCoverage":[{"country":"deu","language":"en_UK"},{"country":"aut","language":"en_UK"},{"country":"lux","language":"en_UK"}]},"metadata":[]} +{"identifier":"07f9b89a-704e-4f66-80d1-b5670ccbd110","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","sourceOrigin":{"country":"deu","language":"en_UK"},"peerOrigin":{"country":"deu","language":"nl"},"peerCoverage":[{"country":"deu","language":"nl"},{"country":"aut","language":"nl"}]},"metadata":[]} +{"identifier":"42a96bec-0f04-43ac-bbc7-be9baedbde2e","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","sourceOrigin":{"country":"deu","language":"nl"},"peerOrigin":{"country":"deu","language":"de"},"peerCoverage":[{"country":"deu","language":"de"},{"country":"aut","language":"de"},{"country":"lux","language":"de"}]},"metadata":[]} +{"identifier":"e1263785-b57d-4269-929f-670da4279cf0","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"af9db7c2-3cf0-4091-978e-1a0f81766242","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"country":"deu","language":"en_US"},"coveredDimensionSpacePoints":[{"country":"deu","language":"en_US"},{"country":"aut","language":"en_US"},{"country":"deu","language":"en_UK"},{"country":"aut","language":"en_UK"},{"country":"lux","language":"en_UK"}],"parentNodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeName":"node-w0p249o10vma4","initialPropertyValues":{"uriPathSegment":{"value":"switching-dimensions","type":"string"},"title":{"value":"Switching dimensions","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"58459bb0-6ac4-4f32-9287-e2468bdbdccc","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"53c72be8-befb-409f-b2b6-ad54b68cbe05","nodeTypeName":"Neos.TestNodeTypes:Content.Headline","originDimensionSpacePoint":{"country":"deu","language":"en_US"},"coveredDimensionSpacePoints":[{"country":"deu","language":"en_US"},{"country":"aut","language":"en_US"},{"country":"deu","language":"en_UK"},{"country":"aut","language":"en_UK"},{"country":"lux","language":"en_UK"}],"parentNodeAggregateId":"6c302e0e-1d54-4697-a7ec-88d4e0d010cf","nodeName":"node-chdxek8m9mgp8","initialPropertyValues":{"title":{"value":"Content node to delete","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"e2d2f6a6-67c4-48dd-a4f1-1026ac3d0065","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"e91e184f-eb71-4b54-90dc-e8d8dd997f51","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"country":"deu","language":"en_US"},"coveredDimensionSpacePoints":[{"country":"deu","language":"en_US"},{"country":"aut","language":"en_US"},{"country":"deu","language":"en_UK"},{"country":"aut","language":"en_UK"},{"country":"lux","language":"en_UK"}],"parentNodeAggregateId":"af9db7c2-3cf0-4091-978e-1a0f81766242","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"0ee5bb06-c2a7-473e-8dc4-c3faa515d0d6","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"45270070-0d7c-4a89-90a8-a43ef454edf1","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"country":"deu","language":"en_US"},"coveredDimensionSpacePoints":[{"country":"deu","language":"en_US"},{"country":"aut","language":"en_US"},{"country":"deu","language":"en_UK"},{"country":"aut","language":"en_UK"},{"country":"lux","language":"en_UK"}],"parentNodeAggregateId":"af9db7c2-3cf0-4091-978e-1a0f81766242","nodeName":"node-8ws6hkn4o36q1","initialPropertyValues":{"uriPathSegment":{"value":"translated-page","type":"string"},"title":{"value":"Translated page","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"d82b51b6-ffcf-4119-a279-80b137db438d","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"555c9f80-7682-4916-a4c3-851ab5ea0559","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"country":"deu","language":"en_US"},"coveredDimensionSpacePoints":[{"country":"deu","language":"en_US"},{"country":"aut","language":"en_US"},{"country":"deu","language":"en_UK"},{"country":"aut","language":"en_UK"},{"country":"lux","language":"en_UK"}],"parentNodeAggregateId":"af9db7c2-3cf0-4091-978e-1a0f81766242","nodeName":"node-f8e3ze7jvbxkl","initialPropertyValues":{"uriPathSegment":{"value":"untranslated-page","type":"string"},"title":{"value":"Untranslated page","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"6758939c-0091-43a0-9cee-16228b6ffdf9","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"d1d3bfdc-ce6a-cf2e-4eeb-02c11bbe87f4","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"country":"deu","language":"en_US"},"coveredDimensionSpacePoints":[{"country":"deu","language":"en_US"},{"country":"aut","language":"en_US"},{"country":"deu","language":"en_UK"},{"country":"aut","language":"en_UK"},{"country":"lux","language":"en_UK"}],"parentNodeAggregateId":"45270070-0d7c-4a89-90a8-a43ef454edf1","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"3db13d5f-9a7d-4e98-8020-ac37bdc4ad92","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"a54789f4-26df-de1d-c5dc-18a15556b40b","nodeTypeName":"Neos.Neos:ContentCollection","originDimensionSpacePoint":{"country":"deu","language":"en_US"},"coveredDimensionSpacePoints":[{"country":"deu","language":"en_US"},{"country":"aut","language":"en_US"},{"country":"deu","language":"en_UK"},{"country":"aut","language":"en_UK"},{"country":"lux","language":"en_UK"}],"parentNodeAggregateId":"555c9f80-7682-4916-a4c3-851ab5ea0559","nodeName":"main","initialPropertyValues":[],"nodeAggregateClassification":"tethered","succeedingNodeAggregateId":null},"metadata":[]} diff --git a/Tests/IntegrationTests/TestDistribution/composer.json b/Tests/IntegrationTests/TestDistribution/composer.json index b23c99a6ce..dc3ed64728 100644 --- a/Tests/IntegrationTests/TestDistribution/composer.json +++ b/Tests/IntegrationTests/TestDistribution/composer.json @@ -28,7 +28,8 @@ "extra": { "patches": { "neos/neos-development-collection": { - "!!!FEATURE: (Neos.Neos) Track created nodes in PendingChangesProjection": "https://github.com/neos/neos-development-collection/pull/4393.patch" + "!!!FEATURE: (Neos.Neos) Track created nodes in PendingChangesProjection": "https://github.com/neos/neos-development-collection/pull/4393.patch", + "BUGFIX: (Neos.Neos) Restore show action of ContentDimensionsController": "https://github.com/neos/neos-development-collection/pull/4395.patch" } } }, From 1375319a141e45e7bece6e2ef419659e57ff8ba3 Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Mon, 10 Jul 2023 17:36:53 +0200 Subject: [PATCH 07/25] TASK: Get rid of `RemoveNode` feedback in Move* changes As it turns out, using nodeAddresses rather than context paths, these feedbacks are no longer necessary. --- Classes/Domain/Model/Changes/MoveAfter.php | 3 --- Classes/Domain/Model/Changes/MoveBefore.php | 3 --- Classes/Domain/Model/Changes/MoveInto.php | 3 --- 3 files changed, 9 deletions(-) diff --git a/Classes/Domain/Model/Changes/MoveAfter.php b/Classes/Domain/Model/Changes/MoveAfter.php index 99df888cfc..88f4c2c494 100644 --- a/Classes/Domain/Model/Changes/MoveAfter.php +++ b/Classes/Domain/Model/Changes/MoveAfter.php @@ -88,9 +88,6 @@ public function apply(): void $updateParentNodeInfo->setNode($parentNodeOfPreviousSibling); $this->feedbackCollection->add($updateParentNodeInfo); - $removeNode = new RemoveNode($subject, $parentNodeOfPreviousSibling); - $this->feedbackCollection->add($removeNode); - $this->finish($subject); } } diff --git a/Classes/Domain/Model/Changes/MoveBefore.php b/Classes/Domain/Model/Changes/MoveBefore.php index 27d1078c07..a3fa5a491b 100644 --- a/Classes/Domain/Model/Changes/MoveBefore.php +++ b/Classes/Domain/Model/Changes/MoveBefore.php @@ -87,9 +87,6 @@ public function apply(): void $this->feedbackCollection->add($updateParentNodeInfo); - $removeNode = new RemoveNode($subject, $succeedingSiblingParent); - $this->feedbackCollection->add($removeNode); - $this->finish($subject); } } diff --git a/Classes/Domain/Model/Changes/MoveInto.php b/Classes/Domain/Model/Changes/MoveInto.php index 4ca90a9b54..6029a273a6 100644 --- a/Classes/Domain/Model/Changes/MoveInto.php +++ b/Classes/Domain/Model/Changes/MoveInto.php @@ -95,9 +95,6 @@ public function apply(): void $updateParentNodeInfo->setNode($parentNode); $this->feedbackCollection->add($updateParentNodeInfo); - $removeNode = new RemoveNode($subject, $parentNode); - $this->feedbackCollection->add($removeNode); - $this->finish($subject); } } From ce395ca9e3614ec32f7af7a82d2759a74e68f62d Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Mon, 10 Jul 2023 17:38:32 +0200 Subject: [PATCH 08/25] TASK: Add rudimentary support for EditPreviewModes in 9.0 With this change, the UI will default to the default inPlace edit mode, regardless of user-side selection. Actual full-blown support for EditPreviewModes will require deeper changes over the entire code base. --- .../Operations/ReloadContentOutOfBand.php | 15 ++++++++++++++- .../Operations/RenderContentOutOfBand.php | 15 ++++++++++++++- Classes/Fusion/Helper/NodeInfoHelper.php | 10 +++++++++- Configuration/Settings.yaml | 2 +- .../TestDistribution/composer.json | 3 ++- 5 files changed, 40 insertions(+), 5 deletions(-) diff --git a/Classes/Domain/Model/Feedback/Operations/ReloadContentOutOfBand.php b/Classes/Domain/Model/Feedback/Operations/ReloadContentOutOfBand.php index 792fcd72f0..83ae60847b 100644 --- a/Classes/Domain/Model/Feedback/Operations/ReloadContentOutOfBand.php +++ b/Classes/Domain/Model/Feedback/Operations/ReloadContentOutOfBand.php @@ -132,7 +132,20 @@ protected function renderContent(ControllerContext $controllerContext): string|R if ($this->nodeDomAddress) { $fusionView = new FusionView(); - $fusionView->setControllerContext($controllerContext); + + $fakeActionRequest = clone $controllerContext->getRequest(); + $fakeActionRequest->setControllerPackageKey('Neos.Neos'); + $fakeActionRequest->setControllerName('Frontend\\Node'); + $fakeActionRequest->setControllerActionName('edit'); + + $fakeControllerContext = new ControllerContext( + $fakeActionRequest, + $controllerContext->getResponse(), + $controllerContext->getArguments(), + $controllerContext->getUriBuilder(), + ); + + $fusionView->setControllerContext($fakeControllerContext); $fusionView->assign('value', $this->node); $fusionView->setFusionPath($this->nodeDomAddress->getFusionPathForContentRendering()); diff --git a/Classes/Domain/Model/Feedback/Operations/RenderContentOutOfBand.php b/Classes/Domain/Model/Feedback/Operations/RenderContentOutOfBand.php index c3f9539372..f35e488232 100644 --- a/Classes/Domain/Model/Feedback/Operations/RenderContentOutOfBand.php +++ b/Classes/Domain/Model/Feedback/Operations/RenderContentOutOfBand.php @@ -178,7 +178,20 @@ protected function renderContent(ControllerContext $controllerContext): string|R $parentDomAddress = $this->getParentDomAddress(); if ($parentDomAddress) { $fusionView = new FusionView(); - $fusionView->setControllerContext($controllerContext); + + $fakeActionRequest = clone $controllerContext->getRequest(); + $fakeActionRequest->setControllerPackageKey('Neos.Neos'); + $fakeActionRequest->setControllerName('Frontend\\Node'); + $fakeActionRequest->setControllerActionName('edit'); + + $fakeControllerContext = new ControllerContext( + $fakeActionRequest, + $controllerContext->getResponse(), + $controllerContext->getArguments(), + $controllerContext->getUriBuilder(), + ); + + $fusionView->setControllerContext($fakeControllerContext); $fusionView->assign('value', $parentNode); $fusionView->setFusionPath($parentDomAddress->getFusionPath()); diff --git a/Classes/Fusion/Helper/NodeInfoHelper.php b/Classes/Fusion/Helper/NodeInfoHelper.php index d85ac50063..4049051ff8 100644 --- a/Classes/Fusion/Helper/NodeInfoHelper.php +++ b/Classes/Fusion/Helper/NodeInfoHelper.php @@ -211,7 +211,7 @@ protected function getUriInformation(Node $node, ControllerContext $controllerCo if (!$node->nodeType->isOfType($this->documentNodeTypeRole)) { return $nodeInfo; } - $nodeInfo['uri'] = $this->previewUri($node, $controllerContext); + $nodeInfo['uri'] = $this->editUri($node, $controllerContext); return $nodeInfo; } @@ -442,6 +442,14 @@ public function uri(Node|NodeAddress $nodeAddress, ControllerContext $controller return (string)NodeUriBuilder::fromRequest($controllerContext->getRequest())->uriFor($nodeAddress); } + public function editUri(Node $node, ControllerContext $controllerContext): string + { + $contentRepository = $this->contentRepositoryRegistry->get($node->subgraphIdentity->contentRepositoryId); + $nodeAddressFactory = NodeAddressFactory::create($contentRepository); + $nodeAddress = $nodeAddressFactory->createFromNode($node); + return (string)NodeUriBuilder::fromRequest($controllerContext->getRequest())->editUriFor($nodeAddress); + } + public function previewUri(Node $node, ControllerContext $controllerContext): string { $contentRepository = $this->contentRepositoryRegistry->get($node->subgraphIdentity->contentRepositoryId); diff --git a/Configuration/Settings.yaml b/Configuration/Settings.yaml index 7e7ee51eaf..64f4910097 100644 --- a/Configuration/Settings.yaml +++ b/Configuration/Settings.yaml @@ -137,7 +137,7 @@ Neos: personalWorkspace: '${Neos.Ui.Workspace.getPersonalWorkspace(contentRepositoryId)}' ui: contentCanvas: - src: '${Neos.Ui.NodeInfo.uri(documentNode, controllerContext)}' + src: '${Neos.Ui.NodeInfo.editUri(documentNode, controllerContext)}' backgroundColor: '${Configuration.setting(''Neos.Neos.Ui.contentCanvas.backgroundColor'')}' debugMode: false editPreviewMode: '${q(user).property("preferences.preferences")["contentEditing.editPreviewMode"] || Configuration.setting(''Neos.Neos.userInterface.defaultEditPreviewMode'')}' diff --git a/Tests/IntegrationTests/TestDistribution/composer.json b/Tests/IntegrationTests/TestDistribution/composer.json index dc3ed64728..9d84b93d73 100644 --- a/Tests/IntegrationTests/TestDistribution/composer.json +++ b/Tests/IntegrationTests/TestDistribution/composer.json @@ -29,7 +29,8 @@ "patches": { "neos/neos-development-collection": { "!!!FEATURE: (Neos.Neos) Track created nodes in PendingChangesProjection": "https://github.com/neos/neos-development-collection/pull/4393.patch", - "BUGFIX: (Neos.Neos) Restore show action of ContentDimensionsController": "https://github.com/neos/neos-development-collection/pull/4395.patch" + "BUGFIX: (Neos.Neos) Restore show action of ContentDimensionsController": "https://github.com/neos/neos-development-collection/pull/4395.patch", + "FEATURE: Edit preview mode support for Neos 9": "https://github.com/neos/neos-development-collection/pull/4067.patch" } } }, From 7b451a0dd7787401733c0455ba711b0344971e80 Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Tue, 11 Jul 2023 13:17:02 +0200 Subject: [PATCH 09/25] TASK: Update CircleCI php image to cimg/php:8.2-node --- .circleci/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8a5e7bc78a..e3db6fa332 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -65,7 +65,7 @@ jobs: environment: COMPOSER_CACHE_DIR: /home/circleci/composer/cache-dir docker: - - image: cimg/php:8.0-node + - image: cimg/php:8.2-node steps: - attach_workspace: *attach_workspace - run: chmod -R 777 /home/circleci @@ -82,7 +82,7 @@ jobs: environment: FLOW_CONTEXT: Production docker: - - image: cimg/php:8.0-node + - image: cimg/php:8.2-node - image: cimg/mariadb:10.6 environment: MYSQL_DATABASE: neos @@ -121,7 +121,7 @@ jobs: environment: FLOW_CONTEXT: Production docker: - - image: cimg/php:8.0-node + - image: cimg/php:8.2-node - image: cimg/mariadb:10.6 environment: MYSQL_DATABASE: neos From e018877cb52fb4500a0a267528fac44d24c90fd7 Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Tue, 11 Jul 2023 13:29:58 +0200 Subject: [PATCH 10/25] TASK: Adjust e2e.sh test script for CI to match local setup for Neos 9.0 --- Tests/IntegrationTests/e2e-docker.sh | 6 +++--- Tests/IntegrationTests/e2e.sh | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Tests/IntegrationTests/e2e-docker.sh b/Tests/IntegrationTests/e2e-docker.sh index 1034a64817..69afda63b5 100755 --- a/Tests/IntegrationTests/e2e-docker.sh +++ b/Tests/IntegrationTests/e2e-docker.sh @@ -81,16 +81,16 @@ for fixture in $(pwd)/Tests/IntegrationTests/Fixtures/*/; do # TODO: optimize this cd TestDistribution + composer reinstall neos/test-nodetypes composer reinstall neos/test-site ./flow flow:cache:flush --force ./flow flow:cache:warmup - ./flow configuration:show --path Neos.ContentRepositoryRegistry.contentRepositories.default.contentDimensions - if ./flow site:list | grep -q 'Node name'; then ./flow site:prune '*' fi - #./flow site:import --package-key=Neos.TestSite + ./flow configuration:show --path Neos.ContentRepositoryRegistry.contentRepositories.default.contentDimensions + ./flow cr:setup ./flow site:create neos-test-site Neos.TestSite Neos.TestNodeTypes:Document.Page # TODO: Replace with "--assume-yes" flag once "./flow cr:prune" has one diff --git a/Tests/IntegrationTests/e2e.sh b/Tests/IntegrationTests/e2e.sh index fef89eb20c..f31d501e30 100755 --- a/Tests/IntegrationTests/e2e.sh +++ b/Tests/IntegrationTests/e2e.sh @@ -24,12 +24,21 @@ for fixture in Packages/Application/Neos.Neos.Ui/Tests/IntegrationTests/Fixtures composer reinstall neos/test-site ./flow flow:cache:flush --force ./flow flow:cache:warmup - ./flow configuration:show --path Neos.ContentRepository.contentDimensions + ./flow configuration:show --path Neos.ContentRepositoryRegistry.contentRepositories.default.contentDimensions if ./flow site:list | grep -q 'Node name'; then - ./flow site:prune '*' + # TODO: Remove "|| true" - This is currently only needed to prevent CircleCI from exiting + ./flow site:prune '*' || true fi - ./flow site:import --package-key=Neos.TestSite + + ./flow cr:setup + # TODO: Remove "|| true" - This is currently only needed to prevent CircleCI from exiting + ./flow site:create neos-test-site Neos.TestSite Neos.TestNodeTypes:Document.Page || true + # TODO: Replace with "--assume-yes" flag once "./flow cr:prune" has one + printf "y\n" | ./flow cr:prune + echo ./flow cr:import --path ./DistributionPackages/Neos.TestSite/Resources/Private/Content + ./flow cr:import --path ./DistributionPackages/Neos.TestSite/Resources/Private/Content + echo Done ./flow resource:publish cd Packages/Application/Neos.Neos.Ui From c43bb4755060ed1221030b7b9293a85e7694638f Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Tue, 11 Jul 2023 17:16:49 +0200 Subject: [PATCH 11/25] TASK: Merge integration test site packages into one unified distribution --- .../2Dimension/switchingDimensions.e2e.js | 13 +++-- .../SharedNodeTypesPackage/composer.json | 19 -------- .../Configuration/Settings.yaml | 10 +++- .../ee3d239e-48b0-4f99-90be-054301b91792.json | 0 .../50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json | 0 .../aac28f51e5ca842e2646e88e7d242ac3c27e1f25 | Bin .../Resources/Private/Content/events.jsonl | 2 +- .../Neos.Test.OneDimension}/composer.json | 6 +-- .../Configuration/Settings.yaml | 6 ++- .../ee3d239e-48b0-4f99-90be-054301b91792.json | 0 .../50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json | 0 .../aac28f51e5ca842e2646e88e7d242ac3c27e1f25 | Bin .../Resources/Private/Content/events.jsonl | 2 +- .../Resources/Private/Fusion/Root.fusion | 0 .../Neos.Test.TwoDimensions}/composer.json | 6 +-- .../NodeWithDependingPropertiesDataSource.php | 0 .../ImagePropertyNodeCreationHandler.php | 0 .../Configuration/Settings.yaml | 0 .../NodeTypes/Content/Container.yaml | 0 .../NodeTypes/Content/Headline.yaml | 0 .../NodeTypes/Content/Image.yaml | 0 .../NodeTypes/Content/InlineHeadline.yaml | 0 .../Content/NodeWithDependingProperties.yaml | 0 .../NodeTypes/Content/Text.yaml | 0 .../NodeTypes/Document/Page.yaml | 0 .../NodeTypes/Document/PageWithImage.yaml | 0 .../SelectBoxTestPage/OpensAbove.yaml | 0 .../OpensAboveInInspector.yaml | 0 .../OpensBelowAndBreaksOut.yaml | 0 .../Component/Navigation/Navigation.fusion | 0 .../Fusion/Content/Container/Container.fusion | 0 .../Fusion/Content/Headline/Headline.fusion | 0 .../Private/Fusion/Content/Image/Image.fusion | 0 .../InlineHeadline/InlineHeadline.fusion | 0 .../NodeWithDependingProperties.fusion | 0 .../Private/Fusion/Content/Text/Text.fusion | 0 .../Private/Fusion/Document/Page/Page.fusion | 0 .../PageWithImage/PageWithImage.fusion | 0 .../SelectBoxTestPage/OpensAboveIn.fusion | 0 .../OpensAboveInInspector.fusion | 0 .../Resources/Private/Fusion/Root.fusion | 0 .../Neos.TestNodeTypes/composer.json | 10 ++-- .../Neos.TestSite/composer.json | 15 ------ .../TestDistribution/composer.json | 6 ++- Tests/IntegrationTests/e2e-docker.sh | 46 ++++++------------ Tests/IntegrationTests/utils.js | 17 +++++-- 46 files changed, 69 insertions(+), 89 deletions(-) delete mode 100644 Tests/IntegrationTests/SharedNodeTypesPackage/composer.json rename Tests/IntegrationTests/{Fixtures/1Dimension/SitePackage => TestDistribution/DistributionPackages/Neos.Test.OneDimension}/Configuration/Settings.yaml (67%) rename Tests/IntegrationTests/{Fixtures/1Dimension/SitePackage => TestDistribution/DistributionPackages/Neos.Test.OneDimension}/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json (100%) rename Tests/IntegrationTests/{Fixtures/1Dimension/SitePackage => TestDistribution/DistributionPackages/Neos.Test.OneDimension}/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json (100%) rename Tests/IntegrationTests/{Fixtures/1Dimension/SitePackage => TestDistribution/DistributionPackages/Neos.Test.OneDimension}/Resources/Private/Content/Resources/aac28f51e5ca842e2646e88e7d242ac3c27e1f25 (100%) rename Tests/IntegrationTests/{Fixtures/1Dimension/SitePackage => TestDistribution/DistributionPackages/Neos.Test.OneDimension}/Resources/Private/Content/events.jsonl (99%) rename Tests/IntegrationTests/{Fixtures/2Dimension/SitePackage => TestDistribution/DistributionPackages/Neos.Test.OneDimension}/composer.json (56%) rename Tests/IntegrationTests/{Fixtures/2Dimension/SitePackage => TestDistribution/DistributionPackages/Neos.Test.TwoDimensions}/Configuration/Settings.yaml (95%) rename Tests/IntegrationTests/{Fixtures/2Dimension/SitePackage => TestDistribution/DistributionPackages/Neos.Test.TwoDimensions}/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json (100%) rename Tests/IntegrationTests/{Fixtures/2Dimension/SitePackage => TestDistribution/DistributionPackages/Neos.Test.TwoDimensions}/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json (100%) rename Tests/IntegrationTests/{Fixtures/2Dimension/SitePackage => TestDistribution/DistributionPackages/Neos.Test.TwoDimensions}/Resources/Private/Content/Resources/aac28f51e5ca842e2646e88e7d242ac3c27e1f25 (100%) rename Tests/IntegrationTests/{Fixtures/2Dimension/SitePackage => TestDistribution/DistributionPackages/Neos.Test.TwoDimensions}/Resources/Private/Content/events.jsonl (97%) rename Tests/IntegrationTests/{Fixtures/2Dimension/SitePackage => TestDistribution/DistributionPackages/Neos.Test.TwoDimensions}/Resources/Private/Fusion/Root.fusion (100%) rename Tests/IntegrationTests/{Fixtures/1Dimension/SitePackage => TestDistribution/DistributionPackages/Neos.Test.TwoDimensions}/composer.json (56%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Classes/DataSources/NodeWithDependingPropertiesDataSource.php (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Classes/NodeCreationHandler/ImagePropertyNodeCreationHandler.php (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Configuration/Settings.yaml (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/NodeTypes/Content/Container.yaml (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/NodeTypes/Content/Headline.yaml (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/NodeTypes/Content/Image.yaml (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/NodeTypes/Content/InlineHeadline.yaml (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/NodeTypes/Content/NodeWithDependingProperties.yaml (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/NodeTypes/Content/Text.yaml (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/NodeTypes/Document/Page.yaml (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/NodeTypes/Document/PageWithImage.yaml (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/NodeTypes/Document/SelectBoxTestPage/OpensAbove.yaml (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/NodeTypes/Document/SelectBoxTestPage/OpensAboveInInspector.yaml (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/NodeTypes/Document/SelectBoxTestPage/OpensBelowAndBreaksOut.yaml (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Resources/Private/Fusion/Component/Navigation/Navigation.fusion (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Resources/Private/Fusion/Content/Container/Container.fusion (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Resources/Private/Fusion/Content/Headline/Headline.fusion (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Resources/Private/Fusion/Content/Image/Image.fusion (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Resources/Private/Fusion/Content/InlineHeadline/InlineHeadline.fusion (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Resources/Private/Fusion/Content/NodeWithDependingProperties/NodeWithDependingProperties.fusion (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Resources/Private/Fusion/Content/Text/Text.fusion (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Resources/Private/Fusion/Document/Page/Page.fusion (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Resources/Private/Fusion/Document/PageWithImage/PageWithImage.fusion (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Resources/Private/Fusion/Document/SelectBoxTestPage/OpensAboveIn.fusion (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Resources/Private/Fusion/Document/SelectBoxTestPage/OpensAboveInInspector.fusion (100%) rename Tests/IntegrationTests/{SharedNodeTypesPackage => TestDistribution/DistributionPackages/Neos.TestNodeTypes}/Resources/Private/Fusion/Root.fusion (100%) delete mode 100644 Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestSite/composer.json diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/switchingDimensions.e2e.js b/Tests/IntegrationTests/Fixtures/2Dimension/switchingDimensions.e2e.js index 8c3e6abcb3..bd9b4e4c26 100644 --- a/Tests/IntegrationTests/Fixtures/2Dimension/switchingDimensions.e2e.js +++ b/Tests/IntegrationTests/Fixtures/2Dimension/switchingDimensions.e2e.js @@ -1,14 +1,19 @@ -import {beforeEach, subSection, checkPropTypes} from './../../utils'; +import {subSection, checkPropTypes, getUrl, adminUserOnTwoDimensionsTestSite} from './../../utils'; import {Selector} from 'testcafe'; -import {ReactSelector} from 'testcafe-react-selectors'; +import {ReactSelector, waitForReact} from 'testcafe-react-selectors'; import { - Page + Page, PublishDropDown } from './../../pageModel'; /* global fixture:true */ fixture`Switching dimensions` - .beforeEach(beforeEach) + .beforeEach(async t => { + await t.useRole(adminUserOnTwoDimensionsTestSite); + await waitForReact(30000); + await PublishDropDown.discardAll(); + await Page.goToPage('Home'); + }) .afterEach(() => checkPropTypes()); test('Switching dimensions', async t => { diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/composer.json b/Tests/IntegrationTests/SharedNodeTypesPackage/composer.json deleted file mode 100644 index e0af4bd7c2..0000000000 --- a/Tests/IntegrationTests/SharedNodeTypesPackage/composer.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "neos/test-nodetypes", - "description": "Some dummy nodetypes", - "type": "neos-package", - "require": { - "neos/neos": "*", - "neos/neos-ui": "*" - }, - "extra": { - "neos": { - "package-key": "Neos.TestNodeTypes" - } - }, - "autoload": { - "psr-4": { - "Neos\\TestNodeTypes\\": "Classes" - } - } -} diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Configuration/Settings.yaml b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/Configuration/Settings.yaml similarity index 67% rename from Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Configuration/Settings.yaml rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/Configuration/Settings.yaml index 274cdccd43..6bbebddb15 100644 --- a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Configuration/Settings.yaml +++ b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/Configuration/Settings.yaml @@ -1,7 +1,8 @@ Neos: ContentRepositoryRegistry: contentRepositories: - default: + onedimension: + preset: default contentDimensions: language: label: 'Language' @@ -22,3 +23,10 @@ Neos: label: Danish 'lv': label: Latvian + Neos: + sites: + 'neos-test-onedimension': + contentRepository: 'onedimension' + contentDimensions: + resolver: + factoryClassName: Neos\Neos\FrontendRouting\DimensionResolution\Resolver\AutoUriPathResolverFactory diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json similarity index 100% rename from Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json similarity index 100% rename from Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Resources/aac28f51e5ca842e2646e88e7d242ac3c27e1f25 b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/Resources/Private/Content/Resources/aac28f51e5ca842e2646e88e7d242ac3c27e1f25 similarity index 100% rename from Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/Resources/aac28f51e5ca842e2646e88e7d242ac3c27e1f25 rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/Resources/Private/Content/Resources/aac28f51e5ca842e2646e88e7d242ac3c27e1f25 diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/events.jsonl b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/Resources/Private/Content/events.jsonl similarity index 99% rename from Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/events.jsonl rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/Resources/Private/Content/events.jsonl index d771fe6cc3..89cd67b6e6 100644 --- a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/Resources/Private/Content/events.jsonl +++ b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/Resources/Private/Content/events.jsonl @@ -1,6 +1,6 @@ {"identifier":"d08644be-70fd-4f47-9078-f676bbe13544","type":"ContentStreamWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8"},"metadata":[]} {"identifier":"152f7ffe-b2a5-4237-beab-c4db9fa15587","type":"RootNodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"2fdbb3ea-1270-49bc-8f8b-cbfc563ef9a6","nodeTypeName":"Neos.Neos:Sites","coveredDimensionSpacePoints":[{"language":"en_US"},{"language":"en_UK"},{"language":"de"},{"language":"nl"},{"language":"fr"},{"language":"da"},{"language":"lv"}],"nodeAggregateClassification":"root"},"metadata":[]} -{"identifier":"c977a059-ba63-4132-a190-baa6ced4f614","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"fr"},"coveredDimensionSpacePoints":[{"language":"fr"}],"parentNodeAggregateId":"2fdbb3ea-1270-49bc-8f8b-cbfc563ef9a6","nodeName":"neos-test-site","initialPropertyValues":{"title":{"value":"Accueil","type":"string"},"uriPathSegment":{"value":"home","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"c977a059-ba63-4132-a190-baa6ced4f614","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"language":"fr"},"coveredDimensionSpacePoints":[{"language":"fr"}],"parentNodeAggregateId":"2fdbb3ea-1270-49bc-8f8b-cbfc563ef9a6","nodeName":"neos-test-onedimension","initialPropertyValues":{"title":{"value":"Accueil","type":"string"},"uriPathSegment":{"value":"home","type":"string"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} {"identifier":"7e1e6a07-b80f-4cad-8fe6-519d34b86cad","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"language":"fr"},"peerOrigin":{"language":"en_UK"},"peerCoverage":[{"language":"en_UK"}]},"metadata":[]} {"identifier":"37c01008-80f0-4252-8ff5-d44154cec8e7","type":"NodePropertiesWereSet","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","originDimensionSpacePoint":{"language":"en_UK"},"affectedDimensionSpacePoints":[{"language":"en_UK"}],"propertyValues":{"title":{"value":"Home","type":"string"},"uriPathSegment":{"value":"home","type":"string"},"image":{"value":{"__flow_object_type":"Neos\\Media\\Domain\\Model\\ImageVariant","__identifier":"50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1"},"type":"Neos\\Media\\Domain\\Model\\ImageInterface"}}},"metadata":[]} {"identifier":"c30068ba-258b-4393-b0de-aaf37d43fe69","type":"NodeGeneralizationVariantWasCreated","payload":{"contentStreamId":"7ebcc393-4120-4d29-a0d8-8bc708ecb3f8","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"language":"en_UK"},"generalizationOrigin":{"language":"en_US"},"generalizationCoverage":[{"language":"en_US"}]},"metadata":[]} diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/composer.json b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/composer.json similarity index 56% rename from Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/composer.json rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/composer.json index fa7065d535..9e82c50165 100644 --- a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/composer.json +++ b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.OneDimension/composer.json @@ -1,6 +1,6 @@ { - "name": "neos/test-site", - "description": "A Neos website", + "name": "neos/test-onedimension", + "description": "A Neos website with one dimension", "type": "neos-site", "require": { "neos/neos": "*", @@ -9,7 +9,7 @@ }, "extra": { "neos": { - "package-key": "Neos.TestSite" + "package-key": "Neos.Test.OneDimension" } } } diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Configuration/Settings.yaml b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/Configuration/Settings.yaml similarity index 95% rename from Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Configuration/Settings.yaml rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/Configuration/Settings.yaml index 3adeb77ff5..bc751b79d0 100644 --- a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Configuration/Settings.yaml +++ b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/Configuration/Settings.yaml @@ -1,7 +1,8 @@ Neos: ContentRepositoryRegistry: contentRepositories: - default: + twodimensions: + preset: default contentDimensions: country: label: 'Country' @@ -68,7 +69,8 @@ Neos: 'aut': true Neos: sites: - '*': + 'neos-test-twodimensions': + contentRepository: 'twodimensions' contentDimensions: resolver: factoryClassName: Neos\Neos\FrontendRouting\DimensionResolution\Resolver\UriPathResolverFactory diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json similarity index 100% rename from Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/Resources/Private/Content/Assets/ee3d239e-48b0-4f99-90be-054301b91792.json diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json similarity index 100% rename from Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/Resources/Private/Content/ImageVariants/50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1.json diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Resources/aac28f51e5ca842e2646e88e7d242ac3c27e1f25 b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/Resources/Private/Content/Resources/aac28f51e5ca842e2646e88e7d242ac3c27e1f25 similarity index 100% rename from Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/Resources/aac28f51e5ca842e2646e88e7d242ac3c27e1f25 rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/Resources/Private/Content/Resources/aac28f51e5ca842e2646e88e7d242ac3c27e1f25 diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/events.jsonl b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/Resources/Private/Content/events.jsonl similarity index 97% rename from Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/events.jsonl rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/Resources/Private/Content/events.jsonl index a7ecb9c06e..eb5e838523 100644 --- a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Content/events.jsonl +++ b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/Resources/Private/Content/events.jsonl @@ -1,6 +1,6 @@ {"identifier":"0ebdfc06-3698-4ddb-83f5-109023213b84","type":"ContentStreamWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b"},"metadata":[]} {"identifier":"55ea0055-eda8-4077-b3b0-2c2d599a8f27","type":"RootNodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"2fbc3faf-663a-4ef0-b586-7b2c1c7fd342","nodeTypeName":"Neos.Neos:Sites","coveredDimensionSpacePoints":[{"country":"deu","language":"en_US"},{"country":"deu","language":"en_UK"},{"country":"deu","language":"de"},{"country":"deu","language":"fr"},{"country":"deu","language":"nl"},{"country":"deu","language":"lv"},{"country":"aut","language":"en_US"},{"country":"aut","language":"en_UK"},{"country":"aut","language":"de"},{"country":"aut","language":"fr"},{"country":"aut","language":"nl"},{"country":"aut","language":"lv"},{"country":"lux","language":"en_UK"},{"country":"lux","language":"de"},{"country":"dnk","language":"en_UK"},{"country":"dnk","language":"da"}],"nodeAggregateClassification":"root"},"metadata":[]} -{"identifier":"a9fdb629-97ce-4321-bbec-a1dbf27530fd","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"country":"dnk","language":"da"},"coveredDimensionSpacePoints":[{"country":"dnk","language":"da"}],"parentNodeAggregateId":"2fbc3faf-663a-4ef0-b586-7b2c1c7fd342","nodeName":"neos-test-site","initialPropertyValues":{"title":{"value":"Home","type":"string"},"uriPathSegment":{"value":"home","type":"string"},"image":{"value":{"__flow_object_type":"Neos\\Media\\Domain\\Model\\ImageVariant","__identifier":"50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1"},"type":"Neos\\Media\\Domain\\Model\\ImageInterface"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} +{"identifier":"a9fdb629-97ce-4321-bbec-a1dbf27530fd","type":"NodeAggregateWithNodeWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","nodeTypeName":"Neos.TestNodeTypes:Document.Page","originDimensionSpacePoint":{"country":"dnk","language":"da"},"coveredDimensionSpacePoints":[{"country":"dnk","language":"da"}],"parentNodeAggregateId":"2fbc3faf-663a-4ef0-b586-7b2c1c7fd342","nodeName":"neos-test-twodimensions","initialPropertyValues":{"title":{"value":"Home","type":"string"},"uriPathSegment":{"value":"home","type":"string"},"image":{"value":{"__flow_object_type":"Neos\\Media\\Domain\\Model\\ImageVariant","__identifier":"50cd4a3e-1cc3-4bbb-b2ab-919abb4011f1"},"type":"Neos\\Media\\Domain\\Model\\ImageInterface"}},"nodeAggregateClassification":"regular","succeedingNodeAggregateId":null},"metadata":[]} {"identifier":"06ce4e00-bede-4d76-a6b9-02c646ce933b","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"country":"dnk","language":"da"},"peerOrigin":{"country":"deu","language":"lv"},"peerCoverage":[{"country":"deu","language":"lv"},{"country":"aut","language":"lv"}]},"metadata":[]} {"identifier":"c8b2be8f-fd74-4ea5-b2f8-35a3876d11a9","type":"NodePropertiesWereSet","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","originDimensionSpacePoint":{"country":"deu","language":"lv"},"affectedDimensionSpacePoints":[{"country":"deu","language":"lv"},{"country":"aut","language":"lv"}],"propertyValues":{"title":{"value":"M\u0101jas","type":"string"},"uriPathSegment":{"value":"home","type":"string"}}},"metadata":[]} {"identifier":"c2c89695-2e12-41ac-bc4a-9b197b67a6f8","type":"NodePeerVariantWasCreated","payload":{"contentStreamId":"ead48ed5-f915-44bd-8df8-29475c8b145b","nodeAggregateId":"f676459d-ca77-44bc-aeea-44114814c279","sourceOrigin":{"country":"deu","language":"lv"},"peerOrigin":{"country":"deu","language":"en_US"},"peerCoverage":[{"country":"deu","language":"en_US"},{"country":"aut","language":"en_US"},{"country":"deu","language":"en_UK"},{"country":"aut","language":"en_UK"},{"country":"lux","language":"en_UK"}]},"metadata":[]} diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Fusion/Root.fusion b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/Resources/Private/Fusion/Root.fusion similarity index 100% rename from Tests/IntegrationTests/Fixtures/2Dimension/SitePackage/Resources/Private/Fusion/Root.fusion rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/Resources/Private/Fusion/Root.fusion diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/composer.json b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/composer.json similarity index 56% rename from Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/composer.json rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/composer.json index fa7065d535..82d376240b 100644 --- a/Tests/IntegrationTests/Fixtures/1Dimension/SitePackage/composer.json +++ b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.Test.TwoDimensions/composer.json @@ -1,6 +1,6 @@ { - "name": "neos/test-site", - "description": "A Neos website", + "name": "neos/test-twodimensions", + "description": "A Neos website with two dimensions", "type": "neos-site", "require": { "neos/neos": "*", @@ -9,7 +9,7 @@ }, "extra": { "neos": { - "package-key": "Neos.TestSite" + "package-key": "Neos.Test.TwoDimensions" } } } diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Classes/DataSources/NodeWithDependingPropertiesDataSource.php b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Classes/DataSources/NodeWithDependingPropertiesDataSource.php similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Classes/DataSources/NodeWithDependingPropertiesDataSource.php rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Classes/DataSources/NodeWithDependingPropertiesDataSource.php diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Classes/NodeCreationHandler/ImagePropertyNodeCreationHandler.php b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Classes/NodeCreationHandler/ImagePropertyNodeCreationHandler.php similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Classes/NodeCreationHandler/ImagePropertyNodeCreationHandler.php rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Classes/NodeCreationHandler/ImagePropertyNodeCreationHandler.php diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Configuration/Settings.yaml b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Configuration/Settings.yaml similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Configuration/Settings.yaml rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Configuration/Settings.yaml diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Content/Container.yaml b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Content/Container.yaml similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Content/Container.yaml rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Content/Container.yaml diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Content/Headline.yaml b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Content/Headline.yaml similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Content/Headline.yaml rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Content/Headline.yaml diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Content/Image.yaml b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Content/Image.yaml similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Content/Image.yaml rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Content/Image.yaml diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Content/InlineHeadline.yaml b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Content/InlineHeadline.yaml similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Content/InlineHeadline.yaml rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Content/InlineHeadline.yaml diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Content/NodeWithDependingProperties.yaml b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Content/NodeWithDependingProperties.yaml similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Content/NodeWithDependingProperties.yaml rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Content/NodeWithDependingProperties.yaml diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Content/Text.yaml b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Content/Text.yaml similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Content/Text.yaml rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Content/Text.yaml diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Document/Page.yaml b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Document/Page.yaml similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Document/Page.yaml rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Document/Page.yaml diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Document/PageWithImage.yaml b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Document/PageWithImage.yaml similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Document/PageWithImage.yaml rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Document/PageWithImage.yaml diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Document/SelectBoxTestPage/OpensAbove.yaml b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Document/SelectBoxTestPage/OpensAbove.yaml similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Document/SelectBoxTestPage/OpensAbove.yaml rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Document/SelectBoxTestPage/OpensAbove.yaml diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Document/SelectBoxTestPage/OpensAboveInInspector.yaml b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Document/SelectBoxTestPage/OpensAboveInInspector.yaml similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Document/SelectBoxTestPage/OpensAboveInInspector.yaml rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Document/SelectBoxTestPage/OpensAboveInInspector.yaml diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Document/SelectBoxTestPage/OpensBelowAndBreaksOut.yaml b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Document/SelectBoxTestPage/OpensBelowAndBreaksOut.yaml similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/NodeTypes/Document/SelectBoxTestPage/OpensBelowAndBreaksOut.yaml rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/NodeTypes/Document/SelectBoxTestPage/OpensBelowAndBreaksOut.yaml diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Component/Navigation/Navigation.fusion b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Component/Navigation/Navigation.fusion similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Component/Navigation/Navigation.fusion rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Component/Navigation/Navigation.fusion diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Content/Container/Container.fusion b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Content/Container/Container.fusion similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Content/Container/Container.fusion rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Content/Container/Container.fusion diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Content/Headline/Headline.fusion b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Content/Headline/Headline.fusion similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Content/Headline/Headline.fusion rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Content/Headline/Headline.fusion diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Content/Image/Image.fusion b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Content/Image/Image.fusion similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Content/Image/Image.fusion rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Content/Image/Image.fusion diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Content/InlineHeadline/InlineHeadline.fusion b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Content/InlineHeadline/InlineHeadline.fusion similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Content/InlineHeadline/InlineHeadline.fusion rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Content/InlineHeadline/InlineHeadline.fusion diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Content/NodeWithDependingProperties/NodeWithDependingProperties.fusion b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Content/NodeWithDependingProperties/NodeWithDependingProperties.fusion similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Content/NodeWithDependingProperties/NodeWithDependingProperties.fusion rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Content/NodeWithDependingProperties/NodeWithDependingProperties.fusion diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Content/Text/Text.fusion b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Content/Text/Text.fusion similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Content/Text/Text.fusion rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Content/Text/Text.fusion diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Document/Page/Page.fusion b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Document/Page/Page.fusion similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Document/Page/Page.fusion rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Document/Page/Page.fusion diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Document/PageWithImage/PageWithImage.fusion b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Document/PageWithImage/PageWithImage.fusion similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Document/PageWithImage/PageWithImage.fusion rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Document/PageWithImage/PageWithImage.fusion diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Document/SelectBoxTestPage/OpensAboveIn.fusion b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Document/SelectBoxTestPage/OpensAboveIn.fusion similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Document/SelectBoxTestPage/OpensAboveIn.fusion rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Document/SelectBoxTestPage/OpensAboveIn.fusion diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Document/SelectBoxTestPage/OpensAboveInInspector.fusion b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Document/SelectBoxTestPage/OpensAboveInInspector.fusion similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Document/SelectBoxTestPage/OpensAboveInInspector.fusion rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Document/SelectBoxTestPage/OpensAboveInInspector.fusion diff --git a/Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Root.fusion b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Root.fusion similarity index 100% rename from Tests/IntegrationTests/SharedNodeTypesPackage/Resources/Private/Fusion/Root.fusion rename to Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/Resources/Private/Fusion/Root.fusion diff --git a/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/composer.json b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/composer.json index 47c0164f23..e0af4bd7c2 100644 --- a/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/composer.json +++ b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestNodeTypes/composer.json @@ -3,8 +3,8 @@ "description": "Some dummy nodetypes", "type": "neos-package", "require": { - "neos/neos-ui": "*", - "neos/fusion-afx": "*" + "neos/neos": "*", + "neos/neos-ui": "*" }, "extra": { "neos": { @@ -12,8 +12,8 @@ } }, "autoload": { - "psr-4": { - "Neos\\TestNodeTypes\\": "Classes" - } + "psr-4": { + "Neos\\TestNodeTypes\\": "Classes" + } } } diff --git a/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestSite/composer.json b/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestSite/composer.json deleted file mode 100644 index 6b391192c8..0000000000 --- a/Tests/IntegrationTests/TestDistribution/DistributionPackages/Neos.TestSite/composer.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "neos/test-site", - "description": "A dummy site package that will be replaced by fixtures during tests", - "type": "neos-site", - "require": { - "neos/neos": "*", - "neos/neos-ui": "*", - "neos/fusion-afx": "*" - }, - "extra": { - "neos": { - "package-key": "Neos.TestSite" - } - } -} diff --git a/Tests/IntegrationTests/TestDistribution/composer.json b/Tests/IntegrationTests/TestDistribution/composer.json index 9d84b93d73..61699fa009 100644 --- a/Tests/IntegrationTests/TestDistribution/composer.json +++ b/Tests/IntegrationTests/TestDistribution/composer.json @@ -20,7 +20,8 @@ "neos/neos-ui": "9.0.x-dev as 9.0", "neos/neos-ui-compiled": "9.0.x-dev as 9.0", - "neos/test-site": "@dev", + "neos/test-onedimension": "@dev", + "neos/test-twodimensions": "@dev", "neos/test-nodetypes": "@dev", "cweagans/composer-patches": "^1.7.3" @@ -30,7 +31,8 @@ "neos/neos-development-collection": { "!!!FEATURE: (Neos.Neos) Track created nodes in PendingChangesProjection": "https://github.com/neos/neos-development-collection/pull/4393.patch", "BUGFIX: (Neos.Neos) Restore show action of ContentDimensionsController": "https://github.com/neos/neos-development-collection/pull/4395.patch", - "FEATURE: Edit preview mode support for Neos 9": "https://github.com/neos/neos-development-collection/pull/4067.patch" + "FEATURE: Edit preview mode support for Neos 9": "https://github.com/neos/neos-development-collection/pull/4067.patch", + "BUGFIX: Consistently use correct cr identifier across delegated cr:* commands": "https://github.com/neos/neos-development-collection/pull/4400.patch" } } }, diff --git a/Tests/IntegrationTests/e2e-docker.sh b/Tests/IntegrationTests/e2e-docker.sh index 69afda63b5..81884401be 100755 --- a/Tests/IntegrationTests/e2e-docker.sh +++ b/Tests/IntegrationTests/e2e-docker.sh @@ -50,6 +50,22 @@ dc exec -T php bash <<-'BASH' ./flow flow:cache:warmup ./flow doctrine:migrate ./flow user:create --username=admin --password=password --first-name=John --last-name=Doe --roles=Administrator || true + + ./flow cr:setup --content-repository onedimension + ./flow site:create neos-test-onedimension Neos.Test.OneDimension Neos.TestNodeTypes:Document.Page + ./flow domain:add neos-test-onedimension onedimension.localhost --port 8081 + # TODO: Replace with "--assume-yes" flag once "./flow cr:prune" has one + printf "y\n" | ./flow cr:prune --content-repository onedimension + ./flow cr:import --content-repository onedimension --path ./DistributionPackages/Neos.Test.OneDimension/Resources/Private/Content + + ./flow cr:setup --content-repository twodimensions + ./flow site:create neos-test-twodimensions Neos.Test.TwoDimensions Neos.TestNodeTypes:Document.Page + ./flow domain:add neos-test-twodimensions twodimensions.localhost --port 8081 + # TODO: Replace with "--assume-yes" flag once "./flow cr:prune" has one + printf "y\n" | ./flow cr:prune --content-repository twodimensions + ./flow cr:import --content-repository twodimensions --path ./DistributionPackages/Neos.Test.TwoDimensions/Resources/Private/Content + + ./flow resource:publish BASH echo "" @@ -70,36 +86,6 @@ for fixture in $(pwd)/Tests/IntegrationTests/Fixtures/*/; do echo "########################################" echo "# Fixture '$(basename $fixture)'" echo "########################################" - dc exec -T php bash <<-BASH - mkdir -p ./TestDistribution/DistributionPackages - - rm -rf ./TestDistribution/DistributionPackages/Neos.TestNodeTypes - ln -s "../../SharedNodeTypesPackage" ./TestDistribution/DistributionPackages/Neos.TestNodeTypes - - rm -rf ./TestDistribution/DistributionPackages/Neos.TestSite - ln -s "../../Fixtures/$(basename $fixture)/SitePackage" ./TestDistribution/DistributionPackages/Neos.TestSite - - # TODO: optimize this - cd TestDistribution - - composer reinstall neos/test-nodetypes - composer reinstall neos/test-site - ./flow flow:cache:flush --force - ./flow flow:cache:warmup - if ./flow site:list | grep -q 'Node name'; then - ./flow site:prune '*' - fi - ./flow configuration:show --path Neos.ContentRepositoryRegistry.contentRepositories.default.contentDimensions - - ./flow cr:setup - ./flow site:create neos-test-site Neos.TestSite Neos.TestNodeTypes:Document.Page - # TODO: Replace with "--assume-yes" flag once "./flow cr:prune" has one - printf "y\n" | ./flow cr:prune - echo ./flow cr:import --path ./DistributionPackages/Neos.TestSite/Resources/Private/Content - ./flow cr:import --path ./DistributionPackages/Neos.TestSite/Resources/Private/Content - echo Done - ./flow resource:publish -BASH yarn run testcafe "$1" "${fixture}*.e2e.js" \ --selector-timeout=10000 --assertion-timeout=30000 --debug-on-fail diff --git a/Tests/IntegrationTests/utils.js b/Tests/IntegrationTests/utils.js index 8056cef048..86f3289b9e 100644 --- a/Tests/IntegrationTests/utils.js +++ b/Tests/IntegrationTests/utils.js @@ -4,13 +4,24 @@ import {PublishDropDown, Page} from './pageModel'; export const subSection = name => console.log('\x1b[33m%s\x1b[0m', ' - ' + name); -const adminUrl = 'http://127.0.0.1:8081/neos'; const adminUserName = 'admin'; const adminPassword = 'password'; export const getUrl = ClientFunction(() => window.location.href); -export const adminUser = Role(adminUrl, async t => { +export const adminUserOnOneDimensionTestSite = Role('http://onedimension.localhost:8081/neos', async t => { + await t + .typeText('#username', adminUserName) + .typeText('#password', adminPassword) + .click('button.neos-login-btn'); + + await t.expect(getUrl()).contains('/content'); + + await waitForReact(30000); + await Page.waitForIframeLoading(); +}, {preserveUrl: true}); + +export const adminUserOnTwoDimensionsTestSite = Role('http://twodimensions.localhost:8081/neos', async t => { await t .typeText('#username', adminUserName) .typeText('#password', adminPassword) @@ -39,7 +50,7 @@ export async function checkPropTypes() { } export async function beforeEach(t) { - await t.useRole(adminUser); + await t.useRole(adminUserOnOneDimensionTestSite); await waitForReact(30000); await PublishDropDown.discardAll(); await Page.goToPage('Home'); From 895ca5cf84acf95ae703a4b41745ebbc0a2be722 Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Tue, 11 Jul 2023 17:25:49 +0200 Subject: [PATCH 12/25] TASK: Adjust e2e.sh script to match new unified test setup --- .circleci/config.yml | 2 ++ Tests/IntegrationTests/e2e.sh | 55 ++++++++++++----------------------- 2 files changed, 21 insertions(+), 36 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e3db6fa332..deb225bc93 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -113,6 +113,8 @@ jobs: cd /home/circleci/app/Packages/Application/Neos.Neos.Ui nvm install nvm use + echo 127.0.0.1 onedimension.localhost | sudo tee -a /etc/hosts + echo 127.0.0.1 twodimensions.localhost | sudo tee -a /etc/hosts make test-e2e-saucelabs - store_artifacts: path: /home/circleci/app/Data/Logs diff --git a/Tests/IntegrationTests/e2e.sh b/Tests/IntegrationTests/e2e.sh index f31d501e30..4910411eb2 100755 --- a/Tests/IntegrationTests/e2e.sh +++ b/Tests/IntegrationTests/e2e.sh @@ -8,46 +8,29 @@ fi cd ../../.. -rm -rf DummyDistributionPackages || true -mv DistributionPackages DummyDistributionPackages -mkdir DistributionPackages +./flow cr:setup --content-repository onedimension +./flow site:create neos-test-onedimension Neos.Test.OneDimension Neos.TestNodeTypes:Document.Page +./flow domain:add neos-test-onedimension onedimension.localhost --port 8081 +# TODO: Replace with "--assume-yes" flag once "./flow cr:prune" has one +printf "y\n" | ./flow cr:prune --content-repository onedimension +./flow cr:import --content-repository onedimension --path ./DistributionPackages/Neos.Test.OneDimension/Resources/Private/Content -ln -s "../Packages/Application/Neos.Neos.Ui/Tests/IntegrationTests/SharedNodeTypesPackage" DistributionPackages/Neos.TestNodeTypes +./flow cr:setup --content-repository twodimensions +./flow site:create neos-test-twodimensions Neos.Test.TwoDimensions Neos.TestNodeTypes:Document.Page +./flow domain:add neos-test-twodimensions twodimensions.localhost --port 8081 +# TODO: Replace with "--assume-yes" flag once "./flow cr:prune" has one +printf "y\n" | ./flow cr:prune --content-repository twodimensions +./flow cr:import --content-repository twodimensions --path ./DistributionPackages/Neos.Test.TwoDimensions/Resources/Private/Content -for fixture in Packages/Application/Neos.Neos.Ui/Tests/IntegrationTests/Fixtures/*/; do +./flow resource:publish + +cd Packages/Application/Neos.Neos.Ui + +for fixture in Tests/IntegrationTests/Fixtures/*/; do echo "$fixture" - ln -s "../${fixture}SitePackage" DistributionPackages/Neos.TestSite - - # TODO: optimize this - composer reinstall neos/test-nodetypes - composer reinstall neos/test-site - ./flow flow:cache:flush --force - ./flow flow:cache:warmup - ./flow configuration:show --path Neos.ContentRepositoryRegistry.contentRepositories.default.contentDimensions - - if ./flow site:list | grep -q 'Node name'; then - # TODO: Remove "|| true" - This is currently only needed to prevent CircleCI from exiting - ./flow site:prune '*' || true - fi - - ./flow cr:setup - # TODO: Remove "|| true" - This is currently only needed to prevent CircleCI from exiting - ./flow site:create neos-test-site Neos.TestSite Neos.TestNodeTypes:Document.Page || true - # TODO: Replace with "--assume-yes" flag once "./flow cr:prune" has one - printf "y\n" | ./flow cr:prune - echo ./flow cr:import --path ./DistributionPackages/Neos.TestSite/Resources/Private/Content - ./flow cr:import --path ./DistributionPackages/Neos.TestSite/Resources/Private/Content - echo Done - ./flow resource:publish - - cd Packages/Application/Neos.Neos.Ui - yarn run testcafe "$1" "../../../${fixture}*.e2e.js" \ + yarn run testcafe "$1" "${fixture}*.e2e.js" \ --selector-timeout=10000 --assertion-timeout=30000 - cd ../../.. - rm -f DistributionPackages/Neos.TestSite - done -rm -rf DistributionPackages -mv DummyDistributionPackages DistributionPackages +cd ../../.. From 228f5510a7e221717a8c762bcce9f87821892397 Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Wed, 12 Jul 2023 11:32:29 +0200 Subject: [PATCH 13/25] TASK: Remove patch for neos/neos-development-collection#4395 from TestDistribution --- Tests/IntegrationTests/TestDistribution/composer.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Tests/IntegrationTests/TestDistribution/composer.json b/Tests/IntegrationTests/TestDistribution/composer.json index 61699fa009..6295e26ace 100644 --- a/Tests/IntegrationTests/TestDistribution/composer.json +++ b/Tests/IntegrationTests/TestDistribution/composer.json @@ -31,8 +31,7 @@ "neos/neos-development-collection": { "!!!FEATURE: (Neos.Neos) Track created nodes in PendingChangesProjection": "https://github.com/neos/neos-development-collection/pull/4393.patch", "BUGFIX: (Neos.Neos) Restore show action of ContentDimensionsController": "https://github.com/neos/neos-development-collection/pull/4395.patch", - "FEATURE: Edit preview mode support for Neos 9": "https://github.com/neos/neos-development-collection/pull/4067.patch", - "BUGFIX: Consistently use correct cr identifier across delegated cr:* commands": "https://github.com/neos/neos-development-collection/pull/4400.patch" + "FEATURE: Edit preview mode support for Neos 9": "https://github.com/neos/neos-development-collection/pull/4067.patch" } } }, From cc06094961ea097c4a814d5f0fd705fb89230d70 Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Wed, 12 Jul 2023 12:22:45 +0200 Subject: [PATCH 14/25] TASK: Restore dependency to neos/buildessentials and phpunit in TestDistribution --- Tests/IntegrationTests/TestDistribution/composer.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Tests/IntegrationTests/TestDistribution/composer.json b/Tests/IntegrationTests/TestDistribution/composer.json index 6295e26ace..85c8b3e536 100644 --- a/Tests/IntegrationTests/TestDistribution/composer.json +++ b/Tests/IntegrationTests/TestDistribution/composer.json @@ -26,6 +26,10 @@ "cweagans/composer-patches": "^1.7.3" }, + "require-dev": { + "neos/buildessentials": "@dev", + "phpunit/phpunit": "^9.0" + }, "extra": { "patches": { "neos/neos-development-collection": { From b6f397089cb78ec6fe3487e5626f3a57b45550b4 Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Wed, 12 Jul 2023 15:36:36 +0200 Subject: [PATCH 15/25] TASK: Add E2E test for switching between sites in a multi-site setup --- .../Fixtures/2Dimension/switchingSites.e2e.js | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Tests/IntegrationTests/Fixtures/2Dimension/switchingSites.e2e.js diff --git a/Tests/IntegrationTests/Fixtures/2Dimension/switchingSites.e2e.js b/Tests/IntegrationTests/Fixtures/2Dimension/switchingSites.e2e.js new file mode 100644 index 0000000000..90ad6bf98b --- /dev/null +++ b/Tests/IntegrationTests/Fixtures/2Dimension/switchingSites.e2e.js @@ -0,0 +1,59 @@ +import {subSection, checkPropTypes, getUrl, adminUserOnOneDimensionTestSite} from './../../utils'; +import {Selector} from 'testcafe'; +import {waitForReact} from 'testcafe-react-selectors'; +import {Page} from './../../pageModel'; + +/* global fixture:true */ + +fixture`Switching sites` + .afterEach(() => checkPropTypes()); + +test('Switching from Neos.Test.OneDimension to Neos.Test.TwoDimensions and back', async t => { + subSection('Log in @ Neos.Test.OneDimension'); + await t.navigateTo('http://onedimension.localhost:8081/neos'); + await t + .typeText('#username', 'admin') + .typeText('#password', 'password') + .click('button.neos-login-btn'); + await waitForReact(30000); + await Page.goToPage('Home'); + + subSection('Switch to Neos.Test.TwoDimensions via main menu'); + await t.click(Selector('#neos-MenuToggler')); + await t.click(Selector('[href*="twodimensions"]')); + + await t.expect(getUrl()).contains('twodimensions.localhost', 'Switch to Neos.Test.TwoDimensions was successful'); + + subSection('Switch back to Neos.Test.OneDimension via main menu'); + await waitForReact(30000); + await Page.goToPage('Home'); + await t.click(Selector('#neos-MenuToggler')); + await t.click(Selector('[href*="onedimension"]')); + + await t.expect(getUrl()).contains('onedimension.localhost', 'Switch to Neos.Test.OneDimension was successful'); +}); + +test('Switching from Neos.Test.TwoDimensions to Neos.Test.OneDimension and back', async t => { + subSection('Log in @ Neos.Test.TwoDimensions'); + await t.navigateTo('http://twodimensions.localhost:8081/neos'); + await t + .typeText('#username', 'admin') + .typeText('#password', 'password') + .click('button.neos-login-btn'); + await waitForReact(30000); + await Page.goToPage('Home'); + + subSection('Switch to Neos.Test.OneDimension via main menu'); + await t.click(Selector('#neos-MenuToggler')); + await t.click(Selector('[href*="onedimension"]')); + + await t.expect(getUrl()).contains('onedimension.localhost', 'Switch to Neos.Test.OneDimension was successful'); + + subSection('Switch back to Neos.Test.TwoDimensions via main menu'); + await waitForReact(30000); + await Page.goToPage('Home'); + await t.click(Selector('#neos-MenuToggler')); + await t.click(Selector('[href*="twodimensions"]')); + + await t.expect(getUrl()).contains('twodimensions.localhost', 'Switch to Neos.Test.TwoDimensions was successful'); +}); From c250be1b89c671609b57fbb36455ed3726ac61cb Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Wed, 12 Jul 2023 15:56:24 +0200 Subject: [PATCH 16/25] TASK: Fix StyleCI issues --- Classes/ContentRepository/Service/WorkspaceService.php | 1 - Classes/Domain/Model/ChangeInterface.php | 1 - Classes/Domain/Model/ReferencingChangeInterface.php | 1 - Classes/Domain/Service/NodePropertyConverterService.php | 2 +- Classes/Fusion/Helper/NodeInfoHelper.php | 4 ++-- 5 files changed, 3 insertions(+), 6 deletions(-) diff --git a/Classes/ContentRepository/Service/WorkspaceService.php b/Classes/ContentRepository/Service/WorkspaceService.php index a0e5622235..a66162966e 100644 --- a/Classes/ContentRepository/Service/WorkspaceService.php +++ b/Classes/ContentRepository/Service/WorkspaceService.php @@ -32,7 +32,6 @@ */ class WorkspaceService { - /** * @Flow\Inject * @var UserService diff --git a/Classes/Domain/Model/ChangeInterface.php b/Classes/Domain/Model/ChangeInterface.php index 85ca3c0ba3..587d8941b4 100644 --- a/Classes/Domain/Model/ChangeInterface.php +++ b/Classes/Domain/Model/ChangeInterface.php @@ -13,7 +13,6 @@ * source code. */ - use Neos\ContentRepository\Core\Projection\ContentGraph\Node; /** diff --git a/Classes/Domain/Model/ReferencingChangeInterface.php b/Classes/Domain/Model/ReferencingChangeInterface.php index 59e06499f6..24f1ba1a87 100644 --- a/Classes/Domain/Model/ReferencingChangeInterface.php +++ b/Classes/Domain/Model/ReferencingChangeInterface.php @@ -13,7 +13,6 @@ use Neos\ContentRepository\Core\Projection\ContentGraph\Node; - /** * A change that needs to reference another node */ diff --git a/Classes/Domain/Service/NodePropertyConverterService.php b/Classes/Domain/Service/NodePropertyConverterService.php index cc2a4389d4..90a71e41dd 100644 --- a/Classes/Domain/Service/NodePropertyConverterService.php +++ b/Classes/Domain/Service/NodePropertyConverterService.php @@ -144,7 +144,7 @@ public function getProperty(Node $node, $propertyName) ); return $this->toNodeIdentifierStrings($references); - // Here, the normal property access logic starts. + // Here, the normal property access logic starts. } elseif ($propertyName[0] === '_' && $propertyName !== '_hiddenInIndex') { $propertyValue = ObjectAccess::getProperty($node, ltrim($propertyName, '_')); } else { diff --git a/Classes/Fusion/Helper/NodeInfoHelper.php b/Classes/Fusion/Helper/NodeInfoHelper.php index 4049051ff8..f5cdfbabeb 100644 --- a/Classes/Fusion/Helper/NodeInfoHelper.php +++ b/Classes/Fusion/Helper/NodeInfoHelper.php @@ -281,8 +281,8 @@ protected function renderChildrenInformation(Node $node, string $nodeTypeFilterS // child nodes for content tree, must not include those nodes filtered out by `baseNodeType` $contentChildNodes = $subgraph->findChildNodes( $node->nodeAggregateId, - FindChildNodesFilter::create(nodeTypeConstraints: - $this->buildContentChildNodeFilterString() + FindChildNodesFilter::create( + nodeTypeConstraints: $this->buildContentChildNodeFilterString() ) ); $childNodes = $documentChildNodes->merge($contentChildNodes); From ea1dd481f99065da472879de3e2d485f7fc762e9 Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Wed, 12 Jul 2023 17:14:09 +0200 Subject: [PATCH 17/25] TASK: Switch to a strategy based on symlinks rather than copies for docker E2E tests Now, if a test fails locally, it will be possible to live-debug the UI code. --- .circleci/config.yml | 1 + .../Configuration/Settings.yaml | 2 +- Tests/IntegrationTests/docker-compose.yaml | 5 +++++ Tests/IntegrationTests/e2e-docker.sh | 20 +++++++++---------- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index deb225bc93..faba746390 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -81,6 +81,7 @@ jobs: e2e: environment: FLOW_CONTEXT: Production + DB_HOST: 127.0.0.1 docker: - image: cimg/php:8.2-node - image: cimg/mariadb:10.6 diff --git a/Tests/IntegrationTests/TestDistribution/Configuration/Settings.yaml b/Tests/IntegrationTests/TestDistribution/Configuration/Settings.yaml index 3e4d93c451..34e45a207f 100644 --- a/Tests/IntegrationTests/TestDistribution/Configuration/Settings.yaml +++ b/Tests/IntegrationTests/TestDistribution/Configuration/Settings.yaml @@ -7,7 +7,7 @@ Neos: driver: pdo_mysql dbname: neos user: root - host: 127.0.0.1 + host: '%env(string):DB_HOST%' password: not_a_real_password reflection: ignoredTags: diff --git a/Tests/IntegrationTests/docker-compose.yaml b/Tests/IntegrationTests/docker-compose.yaml index 562d3c777e..42a22e5904 100644 --- a/Tests/IntegrationTests/docker-compose.yaml +++ b/Tests/IntegrationTests/docker-compose.yaml @@ -7,11 +7,15 @@ services: ports: - 8081:8081 volumes: + - app:/usr/src/app - composer_cache:/home/circleci/.composer/cache + # add Neos Ui root as cached read-only volume that will be later symlinked into TestDistribution/Packages/ + - ../../.:/usr/src/neos-ui:cached,ro environment: # Enable GD PHP_EXTENSION_GD: 1 COMPOSER_CACHE_DIR: /home/circleci/.composer/cache + DB_HOST: db db: image: mariadb:10.4 @@ -20,4 +24,5 @@ services: MYSQL_ROOT_PASSWORD: not_a_real_password volumes: + app: composer_cache: diff --git a/Tests/IntegrationTests/e2e-docker.sh b/Tests/IntegrationTests/e2e-docker.sh index 81884401be..e417b9a737 100755 --- a/Tests/IntegrationTests/e2e-docker.sh +++ b/Tests/IntegrationTests/e2e-docker.sh @@ -18,9 +18,10 @@ echo "########################################################################## dc down dc up -d dc exec -T php bash <<-'BASH' - rm -rf /usr/src/app/* + # WHY: change owner for composer cache for docker execution + sudo chown -R docker:docker /home/circleci/ BASH -docker cp $(pwd)/Tests/IntegrationTests/. $(dc ps -q php):/usr/src/app +docker cp $(pwd)/Tests/IntegrationTests/TestDistribution/composer.json $(dc ps -q php):/usr/src/app/composer.json sleep 2 echo "" @@ -29,10 +30,12 @@ echo "# Install dependencies... echo "#############################################################################" dc exec -T php bash <<-'BASH' cd /usr/src/app + mkdir -p Configuration sudo chown -R docker:docker . - # WHY: change owner for composer cache for docker execution - sudo chown -R docker:docker /home/circleci/ - cd TestDistribution + + ln -sf /usr/src/neos-ui/Tests/IntegrationTests/TestDistribution/Configuration/Settings.yaml /usr/src/app/Configuration/Settings.yaml + ln -sfn /usr/src/neos-ui/Tests/IntegrationTests/TestDistribution/DistributionPackages /usr/src/app/DistributionPackages + composer install BASH @@ -40,12 +43,10 @@ echo "" echo "#############################################################################" echo "# Initialize Neos... #" echo "#############################################################################" -docker cp $(pwd)/. $(dc ps -q php):/usr/src/app/TestDistribution/Packages/Application/neos-ui dc exec -T php bash <<-'BASH' - cd TestDistribution rm -rf Packages/Application/Neos.Neos.Ui - mv Packages/Application/neos-ui Packages/Application/Neos.Neos.Ui - sed -i 's/host: 127.0.0.1/host: db/g' Configuration/Settings.yaml + ln -s /usr/src/neos-ui /usr/src/app/Packages/Application/Neos.Neos.Ui + ./flow flow:cache:flush ./flow flow:cache:warmup ./flow doctrine:migrate @@ -73,7 +74,6 @@ echo "########################################################################## echo "# Start Flow Server... #" echo "#############################################################################" dc exec -T php bash <<-'BASH' - cd TestDistribution ./flow server:run --port 8081 --host 0.0.0.0 & BASH From 0a858bb1cd5a31e4143f9b06144b0704c3acaad7 Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Wed, 12 Jul 2023 17:26:23 +0200 Subject: [PATCH 18/25] =?UTF-8?q?TASK:=20Merge=20Testcaf=C3=A9=20runs=20in?= =?UTF-8?q?to=20a=20single=20one?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tests/IntegrationTests/e2e-docker.sh | 11 ++--------- Tests/IntegrationTests/e2e.sh | 8 ++------ 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/Tests/IntegrationTests/e2e-docker.sh b/Tests/IntegrationTests/e2e-docker.sh index e417b9a737..55e8fb518c 100755 --- a/Tests/IntegrationTests/e2e-docker.sh +++ b/Tests/IntegrationTests/e2e-docker.sh @@ -81,12 +81,5 @@ echo "" echo "#############################################################################" echo "# Run E2E tests... #" echo "#############################################################################" -for fixture in $(pwd)/Tests/IntegrationTests/Fixtures/*/; do - echo "" - echo "########################################" - echo "# Fixture '$(basename $fixture)'" - echo "########################################" - - yarn run testcafe "$1" "${fixture}*.e2e.js" \ - --selector-timeout=10000 --assertion-timeout=30000 --debug-on-fail -done +yarn run testcafe "$1" "$(pwd)/Tests/IntegrationTests/Fixtures/*/*.e2e.js" \ + --selector-timeout=10000 --assertion-timeout=30000 --debug-on-fail diff --git a/Tests/IntegrationTests/e2e.sh b/Tests/IntegrationTests/e2e.sh index 4910411eb2..e1331bcebb 100755 --- a/Tests/IntegrationTests/e2e.sh +++ b/Tests/IntegrationTests/e2e.sh @@ -26,11 +26,7 @@ printf "y\n" | ./flow cr:prune --content-repository twodimensions cd Packages/Application/Neos.Neos.Ui -for fixture in Tests/IntegrationTests/Fixtures/*/; do - echo "$fixture" - - yarn run testcafe "$1" "${fixture}*.e2e.js" \ - --selector-timeout=10000 --assertion-timeout=30000 -done +yarn run testcafe "$1" "Tests/IntegrationTests/Fixtures/*/*.e2e.js" \ + --selector-timeout=10000 --assertion-timeout=30000 cd ../../.. From 3f2f8867542d84d974a2c2bb85c8989dcab5ff3b Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Fri, 28 Jul 2023 20:07:44 +0200 Subject: [PATCH 19/25] TASK: Symlink composer.json in docker e2e setup (rather than cp) --- Tests/IntegrationTests/e2e-docker.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Tests/IntegrationTests/e2e-docker.sh b/Tests/IntegrationTests/e2e-docker.sh index 55e8fb518c..246aa6eb08 100755 --- a/Tests/IntegrationTests/e2e-docker.sh +++ b/Tests/IntegrationTests/e2e-docker.sh @@ -21,7 +21,9 @@ dc exec -T php bash <<-'BASH' # WHY: change owner for composer cache for docker execution sudo chown -R docker:docker /home/circleci/ BASH -docker cp $(pwd)/Tests/IntegrationTests/TestDistribution/composer.json $(dc ps -q php):/usr/src/app/composer.json +#echo docker cp $(pwd)/Tests/IntegrationTests/TestDistribution/composer.json $(dc ps -q php):/usr/src/app/composer.json +#docker cp $(pwd)/Tests/IntegrationTests/TestDistribution/composer.json $(dc ps -q php):/usr/src/app/composer.json + sleep 2 echo "" @@ -33,6 +35,7 @@ dc exec -T php bash <<-'BASH' mkdir -p Configuration sudo chown -R docker:docker . + ln -sf /usr/src/neos-ui/Tests/IntegrationTests/TestDistribution/composer.json /usr/src/app/Configuration/composer.json ln -sf /usr/src/neos-ui/Tests/IntegrationTests/TestDistribution/Configuration/Settings.yaml /usr/src/app/Configuration/Settings.yaml ln -sfn /usr/src/neos-ui/Tests/IntegrationTests/TestDistribution/DistributionPackages /usr/src/app/DistributionPackages From 07b620a9eb9072316551e1faf2e2b5bb39a2ef59 Mon Sep 17 00:00:00 2001 From: Wilhelm Behncke Date: Wed, 2 Aug 2023 11:13:47 +0200 Subject: [PATCH 20/25] TASK: Remove patches for neos/neos-development-collection#4393 and #4395 from TestDistribution --- Tests/IntegrationTests/TestDistribution/composer.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/Tests/IntegrationTests/TestDistribution/composer.json b/Tests/IntegrationTests/TestDistribution/composer.json index 85c8b3e536..7c3dd2911f 100644 --- a/Tests/IntegrationTests/TestDistribution/composer.json +++ b/Tests/IntegrationTests/TestDistribution/composer.json @@ -33,8 +33,6 @@ "extra": { "patches": { "neos/neos-development-collection": { - "!!!FEATURE: (Neos.Neos) Track created nodes in PendingChangesProjection": "https://github.com/neos/neos-development-collection/pull/4393.patch", - "BUGFIX: (Neos.Neos) Restore show action of ContentDimensionsController": "https://github.com/neos/neos-development-collection/pull/4395.patch", "FEATURE: Edit preview mode support for Neos 9": "https://github.com/neos/neos-development-collection/pull/4067.patch" } } From d0c743c38d27f88bb443355c2ce55e7b1042bb4e Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Sat, 16 Sep 2023 21:10:52 +0200 Subject: [PATCH 21/25] Revert "TASK: Add rudimentary support for EditPreviewModes in 9.0" This reverts commit ce395ca9e3614ec32f7af7a82d2759a74e68f62d. --- .../Operations/ReloadContentOutOfBand.php | 15 +-------------- .../Operations/RenderContentOutOfBand.php | 15 +-------------- Classes/Fusion/Helper/NodeInfoHelper.php | 10 +--------- Configuration/Settings.yaml | 2 +- .../TestDistribution/composer.json | 3 --- 5 files changed, 4 insertions(+), 41 deletions(-) diff --git a/Classes/Domain/Model/Feedback/Operations/ReloadContentOutOfBand.php b/Classes/Domain/Model/Feedback/Operations/ReloadContentOutOfBand.php index 83ae60847b..792fcd72f0 100644 --- a/Classes/Domain/Model/Feedback/Operations/ReloadContentOutOfBand.php +++ b/Classes/Domain/Model/Feedback/Operations/ReloadContentOutOfBand.php @@ -132,20 +132,7 @@ protected function renderContent(ControllerContext $controllerContext): string|R if ($this->nodeDomAddress) { $fusionView = new FusionView(); - - $fakeActionRequest = clone $controllerContext->getRequest(); - $fakeActionRequest->setControllerPackageKey('Neos.Neos'); - $fakeActionRequest->setControllerName('Frontend\\Node'); - $fakeActionRequest->setControllerActionName('edit'); - - $fakeControllerContext = new ControllerContext( - $fakeActionRequest, - $controllerContext->getResponse(), - $controllerContext->getArguments(), - $controllerContext->getUriBuilder(), - ); - - $fusionView->setControllerContext($fakeControllerContext); + $fusionView->setControllerContext($controllerContext); $fusionView->assign('value', $this->node); $fusionView->setFusionPath($this->nodeDomAddress->getFusionPathForContentRendering()); diff --git a/Classes/Domain/Model/Feedback/Operations/RenderContentOutOfBand.php b/Classes/Domain/Model/Feedback/Operations/RenderContentOutOfBand.php index f35e488232..c3f9539372 100644 --- a/Classes/Domain/Model/Feedback/Operations/RenderContentOutOfBand.php +++ b/Classes/Domain/Model/Feedback/Operations/RenderContentOutOfBand.php @@ -178,20 +178,7 @@ protected function renderContent(ControllerContext $controllerContext): string|R $parentDomAddress = $this->getParentDomAddress(); if ($parentDomAddress) { $fusionView = new FusionView(); - - $fakeActionRequest = clone $controllerContext->getRequest(); - $fakeActionRequest->setControllerPackageKey('Neos.Neos'); - $fakeActionRequest->setControllerName('Frontend\\Node'); - $fakeActionRequest->setControllerActionName('edit'); - - $fakeControllerContext = new ControllerContext( - $fakeActionRequest, - $controllerContext->getResponse(), - $controllerContext->getArguments(), - $controllerContext->getUriBuilder(), - ); - - $fusionView->setControllerContext($fakeControllerContext); + $fusionView->setControllerContext($controllerContext); $fusionView->assign('value', $parentNode); $fusionView->setFusionPath($parentDomAddress->getFusionPath()); diff --git a/Classes/Fusion/Helper/NodeInfoHelper.php b/Classes/Fusion/Helper/NodeInfoHelper.php index f5cdfbabeb..99242bd3de 100644 --- a/Classes/Fusion/Helper/NodeInfoHelper.php +++ b/Classes/Fusion/Helper/NodeInfoHelper.php @@ -211,7 +211,7 @@ protected function getUriInformation(Node $node, ControllerContext $controllerCo if (!$node->nodeType->isOfType($this->documentNodeTypeRole)) { return $nodeInfo; } - $nodeInfo['uri'] = $this->editUri($node, $controllerContext); + $nodeInfo['uri'] = $this->previewUri($node, $controllerContext); return $nodeInfo; } @@ -442,14 +442,6 @@ public function uri(Node|NodeAddress $nodeAddress, ControllerContext $controller return (string)NodeUriBuilder::fromRequest($controllerContext->getRequest())->uriFor($nodeAddress); } - public function editUri(Node $node, ControllerContext $controllerContext): string - { - $contentRepository = $this->contentRepositoryRegistry->get($node->subgraphIdentity->contentRepositoryId); - $nodeAddressFactory = NodeAddressFactory::create($contentRepository); - $nodeAddress = $nodeAddressFactory->createFromNode($node); - return (string)NodeUriBuilder::fromRequest($controllerContext->getRequest())->editUriFor($nodeAddress); - } - public function previewUri(Node $node, ControllerContext $controllerContext): string { $contentRepository = $this->contentRepositoryRegistry->get($node->subgraphIdentity->contentRepositoryId); diff --git a/Configuration/Settings.yaml b/Configuration/Settings.yaml index 64f4910097..7e7ee51eaf 100644 --- a/Configuration/Settings.yaml +++ b/Configuration/Settings.yaml @@ -137,7 +137,7 @@ Neos: personalWorkspace: '${Neos.Ui.Workspace.getPersonalWorkspace(contentRepositoryId)}' ui: contentCanvas: - src: '${Neos.Ui.NodeInfo.editUri(documentNode, controllerContext)}' + src: '${Neos.Ui.NodeInfo.uri(documentNode, controllerContext)}' backgroundColor: '${Configuration.setting(''Neos.Neos.Ui.contentCanvas.backgroundColor'')}' debugMode: false editPreviewMode: '${q(user).property("preferences.preferences")["contentEditing.editPreviewMode"] || Configuration.setting(''Neos.Neos.userInterface.defaultEditPreviewMode'')}' diff --git a/Tests/IntegrationTests/TestDistribution/composer.json b/Tests/IntegrationTests/TestDistribution/composer.json index 7c3dd2911f..20704ec76d 100644 --- a/Tests/IntegrationTests/TestDistribution/composer.json +++ b/Tests/IntegrationTests/TestDistribution/composer.json @@ -32,9 +32,6 @@ }, "extra": { "patches": { - "neos/neos-development-collection": { - "FEATURE: Edit preview mode support for Neos 9": "https://github.com/neos/neos-development-collection/pull/4067.patch" - } } }, "repositories": { From 103afcf25ed28a65eebe7c69fddbfc63f7f163d7 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Thu, 21 Sep 2023 16:28:25 +0200 Subject: [PATCH 22/25] BUGFIX: E2E Error: cannot require `......./FlowContextTrait` in `CRRegistrySubjectProvider.php` --- Configuration/Settings.TestingHack.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 Configuration/Settings.TestingHack.yaml diff --git a/Configuration/Settings.TestingHack.yaml b/Configuration/Settings.TestingHack.yaml new file mode 100644 index 0000000000..3504f8671a --- /dev/null +++ b/Configuration/Settings.TestingHack.yaml @@ -0,0 +1,9 @@ +# TODO remove this temporary hack once neos is fixed. +Neos: + Flow: + object: + includeClasses: + "Neos.ContentRepository.TestSuite": + - "(*FAIL)" + "Neos.ContentRepositoryRegistry": + - "Neos\\\\ContentRepositoryRegistry\\\\(?!TestSuite\\\\Behavior\\\\CRRegistrySubjectProvider)" From 084bd2e6c51c832b508017beaab592dfe1b625e3 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Thu, 21 Sep 2023 16:29:02 +0200 Subject: [PATCH 23/25] BUGFIX: `make test-e2e-docker` composer.json not found --- Tests/IntegrationTests/e2e-docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/IntegrationTests/e2e-docker.sh b/Tests/IntegrationTests/e2e-docker.sh index 246aa6eb08..bcec06b019 100755 --- a/Tests/IntegrationTests/e2e-docker.sh +++ b/Tests/IntegrationTests/e2e-docker.sh @@ -35,7 +35,7 @@ dc exec -T php bash <<-'BASH' mkdir -p Configuration sudo chown -R docker:docker . - ln -sf /usr/src/neos-ui/Tests/IntegrationTests/TestDistribution/composer.json /usr/src/app/Configuration/composer.json + ln -sf /usr/src/neos-ui/Tests/IntegrationTests/TestDistribution/composer.json /usr/src/app/composer.json ln -sf /usr/src/neos-ui/Tests/IntegrationTests/TestDistribution/Configuration/Settings.yaml /usr/src/app/Configuration/Settings.yaml ln -sfn /usr/src/neos-ui/Tests/IntegrationTests/TestDistribution/DistributionPackages /usr/src/app/DistributionPackages From dcefe42eaf341e80a967f3de78a57b8e680d4ff7 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Sat, 23 Sep 2023 00:40:22 +0200 Subject: [PATCH 24/25] TASK: Document need for additional etc host entries for local tests --- Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Makefile b/Makefile index 33b3f81881..013c46a2e7 100644 --- a/Makefile +++ b/Makefile @@ -112,6 +112,10 @@ test-e2e: bash Tests/IntegrationTests/e2e.sh chrome ## Executes integration tests locally in a docker-compose setup. +# +# Note: On mac os you might need those two additional `/etc/hosts` entries: +# 127.0.0.1 onedimension.localhost +# 127.0.0.1 twodimensions.localhost test-e2e-docker: build-e2e-testing @bash Tests/IntegrationTests/e2e-docker.sh $(or $(browser),chrome) From dd992789f6284b11c492ce5c47867ae0db7654ff Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Sat, 23 Sep 2023 00:44:09 +0200 Subject: [PATCH 25/25] TASK: Move testing hack yaml to reduce impact on other projects --- Configuration/Settings.TestingHack.yaml | 9 --------- .../TestDistribution/Configuration/Settings.yaml | 9 +++++++++ 2 files changed, 9 insertions(+), 9 deletions(-) delete mode 100644 Configuration/Settings.TestingHack.yaml diff --git a/Configuration/Settings.TestingHack.yaml b/Configuration/Settings.TestingHack.yaml deleted file mode 100644 index 3504f8671a..0000000000 --- a/Configuration/Settings.TestingHack.yaml +++ /dev/null @@ -1,9 +0,0 @@ -# TODO remove this temporary hack once neos is fixed. -Neos: - Flow: - object: - includeClasses: - "Neos.ContentRepository.TestSuite": - - "(*FAIL)" - "Neos.ContentRepositoryRegistry": - - "Neos\\\\ContentRepositoryRegistry\\\\(?!TestSuite\\\\Behavior\\\\CRRegistrySubjectProvider)" diff --git a/Tests/IntegrationTests/TestDistribution/Configuration/Settings.yaml b/Tests/IntegrationTests/TestDistribution/Configuration/Settings.yaml index 34e45a207f..1d980f3a28 100644 --- a/Tests/IntegrationTests/TestDistribution/Configuration/Settings.yaml +++ b/Tests/IntegrationTests/TestDistribution/Configuration/Settings.yaml @@ -13,6 +13,15 @@ Neos: ignoredTags: template: true psalm: true + + # TODO remove this temporary hack once neos is fixed. + object: + includeClasses: + "Neos.ContentRepository.TestSuite": + - "(*FAIL)" + "Neos.ContentRepositoryRegistry": + - "Neos\\\\ContentRepositoryRegistry\\\\(?!TestSuite\\\\Behavior\\\\CRRegistrySubjectProvider)" + Neos: Ui: frontendDevelopmentMode: true