<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:10:21 UTC 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 add field=key&field=summary to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>FOLIO Jira</title>
    <link>https://folio-org.atlassian.net</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>1001.0.0-SNAPSHOT</version>
        <build-number>100246</build-number>
        <build-date>07-02-2024</build-date>
    </build-info>

<item>
            <title>[FOLIO-1035] Add chrome and FF to Nodejs build environment </title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-1035</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;In order to support browser-based unit tests using karma, for example, add Chrome to Nodejs build environment in Docker.   There is some good information here on how to set this up.   It&apos;s a little tricky with Docker. &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://hackernoon.com/running-karma-tests-with-headless-chrome-inside-docker-ae4aceb06ed3&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://hackernoon.com/running-karma-tests-with-headless-chrome-inside-docker-ae4aceb06ed3&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://github.com/eirslett/chrome-karma-docker&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/eirslett/chrome-karma-docker&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
        <key id="80508">FOLIO-1035</key>
            <summary>Add chrome and FF to Nodejs build environment </summary>
                <type id="10003" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium">Task</type>
                                            <priority id="10001" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p2.svg">P2</priority>
                        <status id="6" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10003">Done</resolution>
                                                        <assignee accountid="5f9abc1eb45b2e007453f423">John Malconian</assignee>
                                                                <reporter accountid="5f9abc1eb45b2e007453f423">John Malconian</reporter>
                                    <labels>
                            <label>ci</label>
                            <label>sprint31</label>
                            <label>sprint32</label>
                            <label>sprint33</label>
                            <label>sprint37</label>
                    </labels>
                <created>Wed, 17 Jan 2018 19:14:16 +0000</created>
                <updated>Mon, 12 Nov 2018 14:23:56 +0000</updated>
                            <resolved>Thu, 3 May 2018 17:50:30 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>7</watches>
                                                    <timespent seconds="64800">2 days, 2 hours</timespent>
                                <comments>
                                                            <comment id="189474" author="5f9abc1eb45b2e007453f423" created="Tue, 24 Apr 2018 18:09:22 +0000"  >&lt;p&gt;Steps to support karma with Chrome browser in FOLIO Jenkins build environment: &lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Install Chrome:&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;wget -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - &amp;amp;&amp;amp; \
    sh -c &apos;echo &quot;deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main&quot; \
    &amp;gt;&amp;gt; /etc/apt/sources.list.d/google.list&apos; &amp;amp;&amp;amp; \
    apt-get -q update  &amp;amp;&amp;amp; apt-get install -y google-chrome-stable
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Set env CHROME_BIN - &apos;export CHROME_BIN=/usr/bin/google-chrome-stable&apos;&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Test using ui-eholdings:&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;
jenkins@c335a236ad0d:~/ui-eholdings$ yarn test --karma.singleRun --karma.browsers=ChromeHeadless
yarn run v1.5.1
$ stripes test karma demo/stripes.config.js --karma.singleRun --karma.browsers=ChromeHeadless
Starting Karma tests...
[2018-04-24 17:55:55.233] [DEBUG] config - No config file specified.

START:
webpack: wait until bundle finished: 

webpack: Compiled successfully.
24 04 2018 17:56:45.876:INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/
24 04 2018 17:56:45.877:INFO [launcher]: Launching browser ChromeHeadless with unlimited concurrency
24 04 2018 17:56:46.458:INFO [launcher]: Starting browser ChromeHeadless
24 04 2018 17:56:47.796:INFO [HeadlessChrome 66.0.3359 (Linux 0.0.0)]: Connected on socket RhNoMNw7F4FC-ZxdAAAA with id 50278796
  Error retrieving backend
    when trying to use the app
      &#10004; informs user that an error has occurred
  With no backend at all
    when trying to use the app
      &#10004; blocks access to the eholdings app and tells me that I need to install a backend
  With unconfigured backend
    when trying to use the app
      &#10004; blocks access to the eholdings app and points you to the configuration screen
    when visiting the KB auth form
      &#10004; shows the form action buttons
      filling in incomplete data
        &#10004; displays an errored state for the blank customer id
        &#10004; displays an errored state for the blank api key
      filling in incomplete data, then filling in more data
        &#10004; does not display an error state for customer id
        &#10004; does not display an error state for api key
  With valid backend configuration
    when visiting the KB auth form
      &#10004; has a field for the ebsco customer id
      &#10004; has a field for the ebsco RM API key
      &#10004; field for the ebsco RM API key appears with text as password hidden
      &#10004; does not have visible form action buttons
      filling in invalid data
        &#10004; reports the error to the interface
      filling in complete data
        &#10004; shows the form actions
        saving the changes
          &#10006; disables the save button (skipped)
          &#10006; indicates that it is working (skipped)
          when the changes succeed
            &#10004; hides the form actions
        when saving the changes fail
          &#10004; shows the form action buttons
          &#10004; enables the save button
          &#10004; shows an error message
        when the validation fails
          &#10004; does not enable the save button
        then hitting the cancel button
          &#10004; reverts the changes
...

Finished in 4 mins 22.871 secs / 21.691 secs @ 18:01:11 GMT+0000 (UTC)

SUMMARY:
&#10004; 810 tests completed
&#8505; 18 tests skipped
Karma exited with 0
Done in 318.32s.

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                                                            <comment id="189478" author="5f9abc1eb45b2e007453f423" created="Tue, 24 Apr 2018 19:21:46 +0000"  >&lt;p&gt;With FF:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Install FF from Ubuntu distro - sudo &apos;apt-get install firefox&apos;&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;jenkins@c335a236ad0d:~/ui-eholdings$ yarn test --karma.singleRun --karma.browsers=FirefoxHeadless
yarn run v1.5.1
$ stripes test karma demo/stripes.config.js --karma.singleRun --karma.browsers=FirefoxHeadless
Starting Karma tests...
[2018-04-24 18:38:36.573] [DEBUG] config - No config file specified.

START:
webpack: wait until bundle finished: 

webpack: Compiled successfully.
24 04 2018 18:39:14.157:INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/
24 04 2018 18:39:14.158:INFO [launcher]: Launching browser FirefoxHeadless with unlimited concurrency
24 04 2018 18:39:14.162:INFO [launcher]: Starting browser FirefoxHeadless
24 04 2018 18:39:16.258:INFO [Firefox 59.0.0 (Ubuntu 0.0.0)]: Connected on socket vxuxis6_ZnBxIa41AAAA with id 62177346
  Error retrieving backend
    when trying to use the app
      &#10004; informs user that an error has occurred
  With no backend at all
    when trying to use the app
      &#10004; blocks access to the eholdings app and tells me that I need to install a backend
  With unconfigured backend
    when trying to use the app
      &#10004; blocks access to the eholdings app and points you to the configuration screen
...
Finished in 7 mins 30.32 secs / 32.042 secs @ 18:46:48 GMT+0000 (UTC)

SUMMARY:
&#10004; 810 tests completed
&#8505; 18 tests skipped
Karma exited with 0
Done in 494.01s.
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Install latest FF ESR from Mozilla:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;sudo apt-get remove firefox&lt;br/&gt;
wget -O /tmp/firefox.tar.bz2 &quot;https://download.mozilla.org/?product=firefox-esr-latest&amp;amp;os=linux64&amp;amp;lang=en-US&quot;&lt;br/&gt;
sudo tar -C /opt  -xjf /tmp/firefox.tar.bz2&lt;br/&gt;
export FIREFOX_BIN=/opt/firefox/firefox &lt;/p&gt;

&lt;p&gt;The mozilla distribution seems less straight-forward.   Even though I specify &apos;FirefoxHeadless&apos; it doesn&apos;t want to run unless I start a virtual framebuffer and set my display: &lt;/p&gt;

&lt;p&gt;xvfb :10 &amp;amp;&lt;br/&gt;
export DISPLAY :10&lt;/p&gt;


&lt;p&gt;jenkins@c335a236ad0d:~/ui-eholdings$ yarn test --karma.singleRun --karma.browsers=FirefoxHeadless&lt;br/&gt;
yarn run v1.5.1&lt;br/&gt;
$ stripes test karma demo/stripes.config.js --karma.singleRun --karma.browsers=FirefoxHeadless&lt;br/&gt;
Starting Karma tests...&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;2018-04-24 19:03:20.298&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;DEBUG&amp;#93;&lt;/span&gt; config - No config file specified.&lt;/p&gt;

&lt;p&gt;START:&lt;br/&gt;
webpack: wait until bundle finished: &lt;/p&gt;

&lt;p&gt;webpack: Compiled successfully.&lt;br/&gt;
24 04 2018 19:03:57.997:INFO &lt;span class=&quot;error&quot;&gt;&amp;#91;karma&amp;#93;&lt;/span&gt;: Karma v1.7.1 server started at &lt;a href=&quot;http://0.0.0.0:9876/&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;http://0.0.0.0:9876/&lt;/a&gt;&lt;br/&gt;
24 04 2018 19:03:57.998:INFO &lt;span class=&quot;error&quot;&gt;&amp;#91;launcher&amp;#93;&lt;/span&gt;: Launching browser FirefoxHeadless with unlimited concurrency&lt;br/&gt;
24 04 2018 19:03:58.278:INFO &lt;span class=&quot;error&quot;&gt;&amp;#91;launcher&amp;#93;&lt;/span&gt;: Starting browser FirefoxHeadless&lt;br/&gt;
24 04 2018 19:04:00.369:INFO &lt;span class=&quot;error&quot;&gt;&amp;#91;Firefox 52.0.0 (Linux 0.0.0)&amp;#93;&lt;/span&gt;: Connected on socket JDpwm_Mwqgc3gUcvAAAA with id 84729199&lt;br/&gt;
  Error retrieving backend&lt;br/&gt;
    when trying to use the app&lt;br/&gt;
      &#10004; informs user that an error has occurred&lt;br/&gt;
  With no backend at all&lt;br/&gt;
    when trying to use the app&lt;br/&gt;
      &#10004; blocks access to the eholdings app and tells me that I need to install a backend&lt;br/&gt;
  With unconfigured backend&lt;br/&gt;
    when trying to use the app&lt;br/&gt;
      &#10004; blocks access to the eholdings app and points you to the configuration screen&lt;br/&gt;
...&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Anyway, it works. &lt;/p&gt;</comment>
                                                            <comment id="189486" author="5f9abc1eb45b2e007453f423" created="Thu, 26 Apr 2018 21:19:57 +0000"  >&lt;p&gt;The FF package that&apos;s included in the Ubuntu distro includes a headless option,  but the Mozilla distro does not, therefore,  a virtulal framebuffer (Xvfb) needs to be running and &apos;DISPLAY&apos; needs to be set to run the latter.    FOLIO Jenkins build environment will include FF from Ubuntu which is updated frequently to the latest version as well as FF ESR from the Mozilla - which is the &quot;long-term support&quot; version.  Chrome &quot;stable&quot; will also be included, but in order to run properly in a docker container,  a custom Chrome launcher must be defined in karma.conf.js:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt; customLaunchers: {
      chrome_docker: {
        base: &apos;ChromeHeadless&apos;,
        flags: [
           &apos;--no-sandbox&apos;,
           &apos;--disable-web-security&apos;
        ]
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                                                            <comment id="189490" author="5f9abc1eb45b2e007453f423" created="Tue, 1 May 2018 16:40:39 +0000"  >&lt;p&gt;The FOLIO jenkins build image now includes Chrome, the latest version of Firefox for Ubuntu, as well as Firefox ESR.    In order for Jenkins to run Chrome-based karma tests, a customLauncher Chrome browser needs to be added to the karma configuration.   See customLaunchers configuration for Chrome in the previous comment above for example.    If there is interest in pursuing this,  I will implement a CI script that will run karma-based testing for UI-based repos as an opt-in per project configuration. &lt;/p&gt;</comment>
                                                            <comment id="189494" author="5f9abc1eb45b2e007453f423" created="Thu, 3 May 2018 17:49:05 +0000"  >&lt;p&gt;FOLIO Jenkins now supports Chrome and Firefox browser-based testing with Karma.    See &lt;a href=&quot;https://github.com/folio-org/stripes-components/pull/359&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/folio-org/stripes-components/pull/359&lt;/a&gt; for example implementation.  &lt;/p&gt;

&lt;p&gt;Steps needed: &lt;br/&gt;
1. Add karma.conf.js to top-level project directory that defines customLauncher for Chrome for Docker called &apos;ChromeDocker&apos;&lt;br/&gt;
2. Add the following two parameters to top-level Jenkinsfile: &lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;runTest = &apos;yes&apos;  (Tells Jenkins to run &apos;yarn test&apos;)&lt;/li&gt;
	&lt;li&gt;runTestOptions = &apos;--karma.singleRun --karma.browsers=ChromeDocker&apos;  (additional options to pass to &apos;yarn test&apos;)&lt;/li&gt;
&lt;/ul&gt;

</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzy7k7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10025" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>[CHART] Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>