<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 07:44:46 CET 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Magnolia - Issue tracker</title>
    <link>https://jira.magnolia-cms.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-uk</language>    <build-info>
        <version>9.4.2</version>
        <build-number>940002</build-number>
        <build-date>19-01-2023</build-date>
    </build-info>


<item>
            <title>[MGNLTEST-19] Page object for rendered pages</title>
                <link>https://jira.magnolia-cms.com/browse/MGNLTEST-19</link>
                <project id="17084" key="MGNLTEST">Magnolia Test Framework</project>
                    <description>&lt;h3&gt;&lt;a name=&quot;Overview%26context&quot;&gt;&lt;/a&gt;Overview &amp;amp; context&lt;/h3&gt;

&lt;p&gt;Provide a page object to analyze rendered pages.&lt;br/&gt;
 It should work on both &lt;em&gt;author&lt;/em&gt; and &lt;em&gt;public&lt;/em&gt; context.&lt;/p&gt;

&lt;p&gt;For the big majority of the tests, it should be sufficient to analyze &quot;only&quot; text on the rendered page. &lt;br/&gt;
 Hence, let&apos;s start with a page object for rendered (content-)pages which focus on text-analyzing functions.&lt;/p&gt;
&lt;h3&gt;&lt;a name=&quot;Usecases%3A&quot;&gt;&lt;/a&gt;Use cases:&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;pages app&lt;/li&gt;
	&lt;li&gt;p13n functions&lt;/li&gt;
	&lt;li&gt;workflow&lt;/li&gt;
	&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;&lt;a name=&quot;Requiredfunctions&quot;&gt;&lt;/a&gt;Required functions&lt;/h3&gt;
&lt;h4&gt;&lt;a name=&quot;Pageexist&quot;&gt;&lt;/a&gt;Page exist&lt;/h4&gt;

&lt;p&gt;Tests whether a page for the give location exists.&lt;br/&gt;
 Should be able to differentiate whether it is really the requested page or just an error page returned by tomcat.&lt;/p&gt;

&lt;p&gt;Example use case:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
Given paige opens the Pages app and adds the page /xyz.
When she publishes page /xyz.
Then page $magnoliaPublic/xyz exists.
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h4&gt;&lt;a name=&quot;hastext&quot;&gt;&lt;/a&gt;has-text&lt;/h4&gt;

&lt;p&gt;A function to test whether the rendered page contains a given text.&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;textAisBeforetextB&quot;&gt;&lt;/a&gt;textA-isBefore-textB&lt;/h4&gt;

&lt;p&gt;A function to test, whether a &lt;em&gt;text-A&lt;/em&gt; appears on the page before the &lt;em&gt;text-B&lt;/em&gt;.&lt;/p&gt;</description>
                <environment></environment>
        <key id="79620">MGNLTEST-19</key>
            <summary>Page object for rendered pages</summary>
                <type id="3" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10898&amp;avatarType=issuetype">Task</type>
                                            <priority id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/neutral.gif">Neutral</priority>
                        <status id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="mduerig">Michael Duerig</assignee>
                                    <reporter username="cmeier">Christoph Meier</reporter>
                        <labels>
                            <label>QA&amp;amp;Testing</label>
                            <label>ui-test-fwk</label>
                    </labels>
                <created>Wed, 18 Sep 2019 12:33:32 +0200</created>
                <updated>Tue, 25 Aug 2020 12:55:46 +0200</updated>
                            <resolved>Tue, 18 Aug 2020 13:07:38 +0200</resolved>
                                                    <fixVersion>1.0.1</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="209551" author="fgrilli" created="Tue, 11 Feb 2020 14:55:28 +0100"  >&lt;p&gt;Re: the page exists case, we should already have all we need. E.g.&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
...
pagesApp.hitAction(&lt;span class=&quot;code-quote&quot;&gt;&quot;Publish&quot;&lt;/span&gt;);
...
&lt;span class=&quot;code-comment&quot;&gt;// GIVEN
&lt;/span&gt;expect.navigation().to(LoginPage.PUBLIC);
expect.loginPage().login(LoginPage.SUPERUSER);

&lt;span class=&quot;code-comment&quot;&gt;// WHEN
&lt;/span&gt;expect.findBar().openApp(&lt;span class=&quot;code-quote&quot;&gt;&quot;pages-app&quot;&lt;/span&gt;);

&lt;span class=&quot;code-comment&quot;&gt;// THEN
&lt;/span&gt;assertTrue(expect.contentApp(&lt;span class=&quot;code-quote&quot;&gt;&quot;Pages&quot;&lt;/span&gt;).hasRow(&lt;span class=&quot;code-quote&quot;&gt;&quot;myNewPage&quot;&lt;/span&gt;));
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt; </comment>
                            <comment id="211743" author="cmeier" created="Tue, 3 Mar 2020 05:23:36 +0100"  >&lt;blockquote&gt;&lt;p&gt;Re: the page exists case, we should already have all we need. E.g.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;True indeed.&#160;&lt;br/&gt;
 However, in case we do provide something base independent from selenium which e.g. used the response body to analyze ... such class should be able to provide also a &lt;tt&gt;#pageExists&lt;/tt&gt; which can be used with just one line instead of using the pages app.&lt;/p&gt;

&lt;p&gt;But since me (as the QAE) should not think too much about implementations - the above sense must be considered as a philosophical remark only ;^)&lt;/p&gt;</comment>
                            <comment id="211747" author="cmeier" created="Tue, 3 Mar 2020 05:41:03 +0100"  >&lt;h4&gt;&lt;a name=&quot;PossibleAPI&quot;&gt;&lt;/a&gt;Possible API&lt;/h4&gt;

&lt;p&gt;&lt;b&gt;class:&lt;/b&gt; &lt;tt&gt;RenderedPage&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Object provider:&lt;/b&gt; &lt;tt&gt;PageObjects&lt;/tt&gt;#render(String path)&#160;&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
RenderedPage render(&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; path)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I propose that the path is a path in the &lt;tt&gt;website&lt;/tt&gt; JCR&#160;workspace. &lt;br/&gt;
 Examples:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;/travel&lt;/li&gt;
	&lt;li&gt;/travel/main/01&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The 2nd example is&#160;debatable, but I expect it doesn&apos;t make a difference for the implementation to allow this or not. prbly makes sense.&#160;&lt;br/&gt;
 Given the 2nd example, there is prbly a better name for the class (so far proposed as&#160;RenderedPage).&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Methods&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;RenderedPage&lt;/tt&gt; itself then provides the methods as described above:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;tt&gt;exists&lt;/tt&gt;&lt;/li&gt;
	&lt;li&gt;&lt;tt&gt;hasText(String text)&lt;/tt&gt;&lt;/li&gt;
	&lt;li&gt;&lt;tt&gt;textAisBeforeTextB(String textA, String textB)&lt;/tt&gt;&lt;br/&gt;
 &#160;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="211809" author="cmeier" created="Tue, 3 Mar 2020 10:24:28 +0100"  >&lt;p&gt;The changes from Sang on &lt;tt&gt;info.magnolia.functionaltests.PagesCoreFunctionalTests&lt;/tt&gt; - so far on a PR (&lt;a href=&quot;https://git.magnolia-cms.com/projects/PLATFORM/repos/ce/pull-requests/243/overview&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.magnolia-cms.com/projects/PLATFORM/repos/ce/pull-requests/243/overview&lt;/a&gt;) prbly shows a possible way how this one could be tackled with the already &lt;tt&gt;info.magnolia.testframework.util.TestUtil#openJcrPropServlet&lt;/tt&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10020">
                    <name>dependency</name>
                                                                <inwardlinks description="is depended upon by">
                                        <issuelink>
            <issuekey id="83710">MGNLCE-186</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_14166" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Acceptance criteria</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                                    <div class="o-completion" style="display: flex; flex-shrink: 0;"><span  class="aui-lozenge aui-lozenge-complete" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="white"><path clip-rule="evenodd" d="m10.41037,3.42544l-7.86501,0c-0.72395,0 -1.31084,0.58688 -1.31084,1.31084l0,7.86508c0,0.7239 0.58689,1.3108 1.31084,1.3108l7.86501,0c0.724,0 1.3109,-0.5869 1.3109,-1.3108l0,-7.86508c0,-0.72396 -0.5869,-1.31084 -1.3109,-1.31084zm-7.86501,-0.65542c-1.08593,0 -1.96626,0.88032 -1.96626,1.96626l0,7.86508c0,1.0859 0.88033,1.9662 1.96626,1.9662l7.86501,0c1.086,0 1.9663,-0.8803 1.9663,-1.9662l0,-7.86508c0,-1.08594 -0.8803,-1.96626 -1.9663,-1.96626l-7.86501,0z" fill-rule="evenodd"/><path d="m5.09049,10.18526l-1.82767,-1.82766l-0.78479,0.78479l2.61246,2.61246l5.38758,-5.38754l-0.78483,-0.78479l-4.60275,4.60274z"/></svg></span><span>Empty</span></span></div>
                        ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10111" key="com.atlassian.jira.toolkit:reporterdomain">
                        <customfieldname>Company</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>magnolia-cms.com</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10031" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 11 Feb 2020 14:55:28 +0100</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_12730" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_14151" key="com.atlassian.jira.toolkit:message">
                        <customfieldname>Docu info</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10246" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>MGNLTEST-2</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10061" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comm is not jira-dev</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10071" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last participant</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>mduerig</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            3 years, 49 weeks, 5 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.atlassian.jira.toolkit:attachments">
                        <customfieldname>Number of attachments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10150" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname>Number of comments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>cmeier</customfieldvalue>
            <customfieldvalue>fgrilli</customfieldvalue>
            <customfieldvalue>mduerig</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzzxnu:0w2u</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10245" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1231">TE 8</customfieldvalue>
    <customfieldvalue id="1242">TE 9</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10242" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_14167" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Task DoR</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                                    <div class="o-completion" style="display: flex; flex-shrink: 0;"><span  class="aui-lozenge aui-lozenge-complete" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="white"><path clip-rule="evenodd" d="m10.41037,3.42544l-7.86501,0c-0.72395,0 -1.31084,0.58688 -1.31084,1.31084l0,7.86508c0,0.7239 0.58689,1.3108 1.31084,1.3108l7.86501,0c0.724,0 1.3109,-0.5869 1.3109,-1.3108l0,-7.86508c0,-0.72396 -0.5869,-1.31084 -1.3109,-1.31084zm-7.86501,-0.65542c-1.08593,0 -1.96626,0.88032 -1.96626,1.96626l0,7.86508c0,1.0859 0.88033,1.9662 1.96626,1.9662l7.86501,0c1.086,0 1.9663,-0.8803 1.9663,-1.9662l0,-7.86508c0,-1.08594 -0.8803,-1.96626 -1.9663,-1.96626l-7.86501,0z" fill-rule="evenodd"/><path d="m5.09049,10.18526l-1.82767,-1.82766l-0.78479,0.78479l2.61246,2.61246l5.38758,-5.38754l-0.78483,-0.78479l-4.60275,4.60274z"/></svg></span><span>Empty</span></span></div>
                        ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_14145" key="com.intenso.jira.issue-templates:issue-templates-customfield">
                        <customfieldname>Template</customfieldname>
                        <customfieldvalues>
                            


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_15131" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Time in Discovery</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10032" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>