<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Astridx</id>
	<title>Joomla! Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Astridx"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Astridx"/>
	<updated>2026-07-09T19:56:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Http_Header_Management&amp;diff=788230</id>
		<title>J4.x:Http Header Management</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Http_Header_Management&amp;diff=788230"/>
		<updated>2021-05-04T08:39:28Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.0}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{Top portal heading|color=white-bkgd|icon=magic|icon-color=#5091cd|size=3x|text-color=#333|title=&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Tutorial&amp;lt;br /&amp;gt;How to Use the New HTTP Header Management in Joomla 4.0&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; As of Joomla 4.0, Joomla introduced an HTTP Header Management System. This System is designed to help site owners to configure the HTTP Security Headers from the Backend&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; In this tutorial, you will find information on how to set up this new system on your site.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Plugin== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===System - HTTP Headers (plg_system_httpheaders)=== &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; Navigate to {{rarr|System,Plugins,System - HTTP Headers}} to access the plugin configuration.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Plugin Configuration=== &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt; From this page you can choose to enable that the headers are written to the server configuration files (.htaccess and web.config) and configure whether the following http headers are enabled&amp;lt;/translate&amp;gt;&lt;br /&gt;
* [https://scotthelme.co.uk/hardening-your-http-response-headers/#x-frame-options X-Frame-Options]&lt;br /&gt;
* [https://scotthelme.co.uk/a-new-security-header-referrer-policy/ Referrer-Policy]&lt;br /&gt;
* [https://www.chromestatus.com/feature/5432089535053824 Cross-Origin-Opener-Policy]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; Using the &amp;quot;Force Header&amp;quot; form you can also force the following headers with its values:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* [https://scotthelme.co.uk/hsts-the-missing-link-in-tls/ Strict-Transport-Security]&lt;br /&gt;
* [https://scotthelme.co.uk/content-security-policy-an-introduction/ Content-Security-Policy]&lt;br /&gt;
* [https://scotthelme.co.uk/content-security-policy-an-introduction/#testingapolicy Content-Security-Policy-Report-Only]&lt;br /&gt;
* [https://scotthelme.co.uk/a-new-security-header-expect-ct/ Expect-CT]&lt;br /&gt;
* [https://scotthelme.co.uk/a-new-security-header-feature-policy/ Feature-Policy &amp;amp; Permissions-Policy]&lt;br /&gt;
* [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/report-to Report-to]&lt;br /&gt;
&lt;br /&gt;
[[File:Plg-system-httpheaders-options-&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt; en&amp;lt;/translate&amp;gt;.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Strict-Transport-Security (HSTS) Configuration=== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; From this page you can choose to enable that the Strict-Transport-Security (HSTS) header as well as configure the max-age value whether subdomains should be included and whether you want to be added to the browsers Preload List.&amp;lt;/translate&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[File:Plg-system-httpheaders-options-hsts-&amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt; en&amp;lt;/translate&amp;gt;.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Component== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Content Security Policy (com_csp)=== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; Navigate to {{rarr|System,Content Security Policy}} to access the Content Security Policy Reports dashboard.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
====Reports==== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; From this screen the Administrator has a global overview of the collected Content Security Policy reports and has the ability to review, publish, unpublish and delete suggested rules for the Content Security Policy directive.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:content-security-policy-reports-&amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; en&amp;lt;/translate&amp;gt;.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; To learn more, please see:&amp;lt;/translate&amp;gt; [[S:MyLanguage/Help4.x:Components_CSP_Reports|&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Content Security Policy Interface&amp;lt;/translate&amp;gt;]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
====Options==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; From this screen you can configure the options of the component like the permissions and specificly the settings for the Content-Security-Policy, including different modes and whether the headers are in read only mode.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:content-security-policy-options-&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt; en&amp;lt;/translate&amp;gt;.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt; To learn more, please see:&amp;lt;/translate&amp;gt; [[S:MyLanguage/Help4.x:Components_CSP_Reports_Options|&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; Content Security Policy Options&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes== &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
When you have configured some HTTP Security Headers directly on the server, then our tooling might create double entries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
Check the output of your HTTP Headers after configuring in the browser console. In Google Chrome: Inspect &amp;gt; Network &amp;gt; the output under Headers). You can than disable the headers that cause double entries. Also check the console of your browser for possible errors.&lt;br /&gt;
&lt;br /&gt;
==Extension Developers== &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; As you might know the big security advantage concerning Content Security Policy jumps in when we can use the Header to block all inline JavaScript and inline CSS affecting for example JavaScript event handlers via HTML attributes.&amp;lt;/translate&amp;gt;&lt;br /&gt;
So with this browser protection enabled we will block inline JavaScript and inline CSS usage also for your extensions. That protection is not enabled by default but can be enabled by your users.&lt;br /&gt;
&lt;br /&gt;
For 4.0 it would be recommended to get the frontend of your extension running with strict Content Security Policy enabled. For 4.1 compatibility it would be recommended that this also applies to your backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; We know that it is still a requirement to have inline JavaScript and CSS, for that reason we have implemented nonce and hash support into our Document APIs when you use them the core will make sure they are whitelisted but we will still block any malicious to protect our sites.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Important notes for Extension Developers ===&lt;br /&gt;
Starting with Joomla 4.0 Content Security Policy:&lt;br /&gt;
* is shipped by the core&lt;br /&gt;
* is disabled by default&lt;br /&gt;
* can be enabled by your users&lt;br /&gt;
* it is strongly recommended that your extension frontend works by 4.0 with Content Security Policy enabled&lt;br /&gt;
* it is recommended that your extension backend works by 4.1 with Content Security Policy enabled&lt;br /&gt;
&lt;br /&gt;
With strict Content Security Policy enabled the following features will be blocked:&lt;br /&gt;
* the execution of JavaScript via the HTML event handlers (onXXX handlers like onClick and similar)&lt;br /&gt;
* the execution of in-page JavaScript not passed to the page via the Document API&lt;br /&gt;
* the execution of JavaScript code injected into DOM APIs such as eval()&lt;br /&gt;
* the usage of inline in-page CSS not passed to the page via the Document API&lt;br /&gt;
* the usage of inline CSS using the HTML style attribute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; To get your extensions work even with strict Content Security Policy enabled, the easiest way is to use the Document API to apply your inline JavaScript and CSS, please check the examples below.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Adding JavaScript using the Joomla API=== &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
&lt;br /&gt;
/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */&lt;br /&gt;
$wa = Factory::getApplication()-&amp;gt;getDocument()-&amp;gt;getWebAssetManager();&lt;br /&gt;
&lt;br /&gt;
// Add JavaScript from URL&lt;br /&gt;
$wa-&amp;gt;registerAndUseScript(&#039;com_example.sample&#039;, &#039;https://example.org/sample.js&#039;, [], [&#039;defer&#039; =&amp;gt; true]);&lt;br /&gt;
&lt;br /&gt;
// Add inline JavaScript&lt;br /&gt;
$wa-&amp;gt;addInlineScript(&#039;&lt;br /&gt;
    document.addEventListener(&amp;quot;DOMContentLoaded&amp;quot;, function(event) {&lt;br /&gt;
        alert(&amp;quot;An inline JavaScript Declaration&amp;quot;);&lt;br /&gt;
    });&lt;br /&gt;
&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Adding CSS using the Joomla API=== &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
&lt;br /&gt;
/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */&lt;br /&gt;
$wa = Factory::getApplication()-&amp;gt;getDocument()-&amp;gt;getWebAssetManager();&lt;br /&gt;
&lt;br /&gt;
// Add Style from URL&lt;br /&gt;
$wa-&amp;gt;registerAndUseStyle(&#039;com_example.sample&#039;, &#039;https://example.org/sample.css&#039;);&lt;br /&gt;
&lt;br /&gt;
// Add inline Style&lt;br /&gt;
$wa-&amp;gt;addInlineStyle(&#039;&lt;br /&gt;
	body {&lt;br /&gt;
		background: #00ff00;&lt;br /&gt;
		color: rgb(0,0,255);&lt;br /&gt;
	}&lt;br /&gt;
&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; More details can be found here:&amp;lt;/translate&amp;gt;[[S:MyLanguage/J3.x:Adding_JavaScript_and_CSS_to_the_page|&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt; Adding JavaScript and CSS to the page&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== Additional resources about Content Security Policy and HTTP Headers ==&lt;br /&gt;
&lt;br /&gt;
* [https://scotthelme.co.uk/csp-cheat-sheet/ CSP Cheat Sheet]&lt;br /&gt;
* [https://scotthelme.co.uk/content-security-policy-an-introduction/ Content Security Policy - An Introduction]&lt;br /&gt;
* [https://securityheaders.com/| SecurityHeaders.com (by Scott Helme)]&lt;br /&gt;
* [https://csp-evaluator.withgoogle.com/| CSP Evaluator]&lt;br /&gt;
* [https://developers.google.com/web/fundamentals/security/csp| Web Fundamentals Content Security Policy]&lt;br /&gt;
* [https://csp.withgoogle.com/docs/index.html| Google&#039;s CSP Documentation]&lt;br /&gt;
* [https://research.google/pubs/pub45542/| CSP Is Dead, Long Live CSP! On the Insecurity of Whitelists and the Future of Content Security Policy]&lt;br /&gt;
* [https://web.dev/tags/security/| web.dev tag Security]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Components{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Plugins{{#translation:}}]]&lt;br /&gt;
[[Category:Security{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Http_Header_Management&amp;diff=788229</id>
		<title>J4.x:Http Header Management</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Http_Header_Management&amp;diff=788229"/>
		<updated>2021-05-04T08:34:31Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.0}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{Top portal heading|color=white-bkgd|icon=magic|icon-color=#5091cd|size=3x|text-color=#333|title=&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Tutorial&amp;lt;br /&amp;gt;How to Use the New HTTP Header Management in Joomla 4.0&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; As of Joomla 4.0, Joomla introduced an HTTP Header Management System. This System is designed to help site owners to configure the HTTP Security Headers from the Backend&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; In this tutorial, you will find information on how to set up this new system on your site.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Plugin== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===System - HTTP Headers (plg_system_httpheaders)=== &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; Navigate to {{rarr|System,Plugins,System - HTTP Headers}} to access the plugin configuration.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Plugin Configuration=== &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt; From this page you can choose to enable that the headers are written to the server configuration files (.htaccess and web.config) and configure whether the following http headers are enabled&amp;lt;/translate&amp;gt;&lt;br /&gt;
* [https://scotthelme.co.uk/hardening-your-http-response-headers/#x-frame-options X-Frame-Options]&lt;br /&gt;
* [https://scotthelme.co.uk/a-new-security-header-referrer-policy/ Referrer-Policy]&lt;br /&gt;
* [https://www.chromestatus.com/feature/5432089535053824 Cross-Origin-Opener-Policy]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; Using the &amp;quot;Force Header&amp;quot; form you can also force the following headers with its values:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* [https://scotthelme.co.uk/hsts-the-missing-link-in-tls/ Strict-Transport-Security]&lt;br /&gt;
* [https://scotthelme.co.uk/content-security-policy-an-introduction/ Content-Security-Policy]&lt;br /&gt;
* [https://scotthelme.co.uk/content-security-policy-an-introduction/#testingapolicy Content-Security-Policy-Report-Only]&lt;br /&gt;
* [https://scotthelme.co.uk/a-new-security-header-expect-ct/ Expect-CT]&lt;br /&gt;
* [https://scotthelme.co.uk/a-new-security-header-feature-policy/ Feature-Policy &amp;amp; Permissions-Policy]&lt;br /&gt;
* [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/report-to Report-to]&lt;br /&gt;
&lt;br /&gt;
[[File:Plg-system-httpheaders-options-&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt; en&amp;lt;/translate&amp;gt;.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Strict-Transport-Security (HSTS) Configuration=== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; From this page you can choose to enable that the Strict-Transport-Security (HSTS) header as well as configure the max-age value whether subdomains should be included and whether you want to be added to the browsers Preload List.&amp;lt;/translate&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[File:Plg-system-httpheaders-options-hsts-&amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt; en&amp;lt;/translate&amp;gt;.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Component== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Content Security Policy (com_csp)=== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; Navigate to {{rarr|System,Content Security Policy}} to access the Content Security Policy Reports dashboard.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
====Reports==== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; From this screen the Administrator has a global overview of the collected Content Security Policy reports and has the ability to review, publish, unpublish and delete suggested rules for the Content Security Policy directive.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:content-security-policy-reports-&amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; en&amp;lt;/translate&amp;gt;.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; To learn more, please see:&amp;lt;/translate&amp;gt; [[S:MyLanguage/Help4.x:Components_CSP_Reports|&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Content Security Policy Interface&amp;lt;/translate&amp;gt;]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
====Options==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; From this screen you can configure the options of the component like the permissions and specificly the settings for the Content-Security-Policy, including different modes and whether the headers are in read only mode.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:content-security-policy-options-&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt; en&amp;lt;/translate&amp;gt;.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt; To learn more, please see:&amp;lt;/translate&amp;gt; [[S:MyLanguage/Help4.x:Components_CSP_Reports_Options|&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; Content Security Policy Options&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes== &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
When you have configured some HTTP Security Headers directly on the server, then our tooling might create double entries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
Check the output of your HTTP Headers after configuring in the browser console. In Google Chrome: Inspect &amp;gt; Network &amp;gt; the output under Headers). You can than disable the headers that cause double entries. Also check the console of your browser for possible errors.&lt;br /&gt;
&lt;br /&gt;
==Extension Developers== &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; As you might know the big security advantage concerning Content Security Policy jumps in when we can use the Header to block all inline JavaScript and inline CSS affecting for example JavaScript event handlers via HTML attributes.&amp;lt;/translate&amp;gt;&lt;br /&gt;
So with this browser protection enabled we will block inline JavaScript and inline CSS usage also for your extensions. That protection is not enabled by default but can be enabled by your users.&lt;br /&gt;
&lt;br /&gt;
For 4.0 it would be recommended to get the frontend of your extension running with strict Content Security Policy enabled. For 4.1 compatibility it would be recommended that this also applies to your backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; We know that it is still a requirement to have inline JavaScript and CSS, for that reason we have implemented nonce and hash support into our Document APIs when you use them the core will make sure they are whitelisted but we will still block any malicious to protect our sites.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Important notes for Extension Developers ===&lt;br /&gt;
Starting with Joomla 4.0 Content Security Policy:&lt;br /&gt;
* is shipped by the core&lt;br /&gt;
* is disabled by default&lt;br /&gt;
* can be enabled by your users&lt;br /&gt;
* it is strongly recommended that your extension frontend works by 4.0 with Content Security Policy enabled&lt;br /&gt;
* it is recommended that your extension backend works by 4.1 with Content Security Policy enabled&lt;br /&gt;
&lt;br /&gt;
With strict Content Security Policy enabled the following features will be blocked:&lt;br /&gt;
* the execution of JavaScript via the HTML event handlers (onXXX handlers like onClick and similar)&lt;br /&gt;
* the execution of in-page JavaScript not passed to the page via the Document API&lt;br /&gt;
* the execution of JavaScript code injected into DOM APIs such as eval()&lt;br /&gt;
* the usage of inline in-page CSS not passed to the page via the Document API&lt;br /&gt;
* the usage of inline CSS using the HTML style attribute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; To get your extensions work even with strict Content Security Policy enabled, the easiest way is to use the Document API to apply your inline JavaScript and CSS, please check the examples below.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Adding JavaScript using the Joomla API=== &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
&lt;br /&gt;
/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */&lt;br /&gt;
$wa = Factory::getApplication()-&amp;gt;getDocument()-&amp;gt;getWebAssetManager();&lt;br /&gt;
&lt;br /&gt;
// Add JavaScript from URL&lt;br /&gt;
$wa-&amp;gt;registerAndUseScript(&#039;com_example.sample&#039;, &#039;https://example.org/sample.js&#039;, [], [&#039;defer&#039; =&amp;gt; true]);&lt;br /&gt;
&lt;br /&gt;
// Add inline JavaScript&lt;br /&gt;
$wa-&amp;gt;addInlineScript(&#039;&lt;br /&gt;
    document.addEventListener(&amp;quot;DOMContentLoaded&amp;quot;, function(event) {&lt;br /&gt;
        alert(&amp;quot;An inline JavaScript Declaration&amp;quot;);&lt;br /&gt;
    });&lt;br /&gt;
&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Adding CSS using the Joomla API=== &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
&lt;br /&gt;
/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */&lt;br /&gt;
$wa = Factory::getApplication()-&amp;gt;getDocument()-&amp;gt;getWebAssetManager();&lt;br /&gt;
&lt;br /&gt;
// Add Style from URL&lt;br /&gt;
$wa-&amp;gt;registerAndUseStyle(&#039;com_example.sample&#039;, &#039;https://example.org/sample.css&#039;);&lt;br /&gt;
&lt;br /&gt;
// Add inline Style&lt;br /&gt;
$wa-&amp;gt;addInlineStyle(&#039;&lt;br /&gt;
	body {&lt;br /&gt;
		background: #00ff00;&lt;br /&gt;
		color: rgb(0,0,255);&lt;br /&gt;
	}&lt;br /&gt;
&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; More details can be found here:&amp;lt;/translate&amp;gt;[[S:MyLanguage/J3.x:Adding_JavaScript_and_CSS_to_the_page|&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt; Adding JavaScript and CSS to the page&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== Additional resources about Content Security Policy and HTTP Headers ==&lt;br /&gt;
&lt;br /&gt;
* [https://scotthelme.co.uk/csp-cheat-sheet/|CSP Cheat Sheet]&lt;br /&gt;
* [https://scotthelme.co.uk/content-security-policy-an-introduction/| Content Security Policy - An Introduction]&lt;br /&gt;
* [https://securityheaders.com/| SecurityHeaders.com (by Scott Helme)]&lt;br /&gt;
* [https://csp-evaluator.withgoogle.com/| CSP Evaluator]&lt;br /&gt;
* [https://developers.google.com/web/fundamentals/security/csp| Web Fundamentals Content Security Policy]&lt;br /&gt;
* [https://csp.withgoogle.com/docs/index.html| Google&#039;s CSP Documentation]&lt;br /&gt;
* [https://research.google/pubs/pub45542/| CSP Is Dead, Long Live CSP! On the Insecurity of Whitelists and the Future of Content Security Policy]&lt;br /&gt;
* [https://web.dev/tags/security/| web.dev tag Security]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Components{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Plugins{{#translation:}}]]&lt;br /&gt;
[[Category:Security{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4&amp;diff=780131</id>
		<title>Potential backward compatibility issues in Joomla 4</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4&amp;diff=780131"/>
		<updated>2021-01-24T18:59:19Z</updated>

		<summary type="html">&lt;p&gt;Astridx: change bootstrap 4 to 5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
This document tracks potential backward compatibility issues for Joomla! 4. Listed are issues which potentially break extensions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
The base of this comparison is Joomla! 3.10.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Updated System Requirements == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The system requirements have been updated as follows:&lt;br /&gt;
*PHP 7.2.5&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL Server support has been dropped.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== PHP MySQL Extension === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
*Joomla no longer supports using PHP&#039;s ext/MySQL driver (which was removed in PHP 7.0). Joomla will automatically try to use the MySQLi extension (available since PHP 5.3) or the MySQL PDO Driver (available since PHP 5.3). Otherwise it will fail to create a database connection.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:196--&amp;gt; * Strict mode has been enabled. The following flags are now active by default in Joomla 4 and you may have to update your database queries accordingly. This will help us with future MySQL version upgrades and also aligns more closely with Postgres to enable easier compatibility with queries in both languages.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:215--&amp;gt;&lt;br /&gt;
As a consequence, Joomla 4 will only use &#039;&#039;&#039;NULL date defaults&#039;&#039;&#039;. The use of the &#039;&#039;invalid default date&#039;&#039; of 0000-00-00 00:00:00 in Joomla 4 has been deprecated.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== PHP Postgres Extension === &amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:106--&amp;gt; Joomla no longer supports using PHP&#039;s ext/pgsql driver. Joomla will automatically try to use the PostgreSQL PDO Driver (available since PHP 5.3 and Joomla 3.9). Otherwise it will fail to create a database connection with a Postgres Database.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== PHP GMP Extension === &amp;lt;!--T:211--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:212--&amp;gt; This is required for using the [[WebAuthn Passwordless Login]] feature. Note the PHP GMP Extension is installed by default on the majority of hosting sites. The [[WebAuthn Passwordless Login]] System Plugin is enabled by default in Joomla 4 on https sites.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP mcrypt Extension === &amp;lt;!--T:213--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:214--&amp;gt; This is required for using the Joomla\CMS\Crypt\Cipher\CrytoCipher class and its alias JCryptCipherCrypto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== CMS Libraries == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The following changes have been made to Joomla! CMS libraries (this is primarily code that was found in the “libraries/cms” directory in Joomla! 3.7 and earlier).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Installer === &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:107--&amp;gt; Plugin discover installs will no longer search for xml files in the Joomla! 1.5 plugin folder layouts&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:108--&amp;gt; In 3.x, only plugins scripts have the preflight method called and none make postflight available during the uninstall process. All extensions types will have these hooks available in 4.0 when being uninstalled. If you currently preflight and postflight and assume they only apply in an install/update context - this logic is now incorrect and you should use the install route (given as one of the method parameters)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:109--&amp;gt; When uninstalling a plugin the uninstall function in the extension script is now triggered before triggering any SQL queries (this is now consistent with all other extension types).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Removed Classes ==== &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
The following classes have been removed in Joomla! 4.0:&lt;br /&gt;
*JInstallerComponent (use JInstallerAdapterComponent instead)&lt;br /&gt;
*JInstallerFile (use JInstallerAdapterFile instead)&lt;br /&gt;
*JInstallerLanguage (use JInstallerAdapterLanguage instead)&lt;br /&gt;
*JInstallerLibrary (use JInstallerAdapterLibrary instead)&lt;br /&gt;
*JInstallerModule (use JInstallerAdapterModule instead)&lt;br /&gt;
*JInstallerPackage (use JInstallerAdapterPackage instead)&lt;br /&gt;
*JInstallerPlugin (use JInstallerAdapterPlugin instead)&lt;br /&gt;
*JInstallerTemplate (use JInstallerAdapterTemplate instead)&lt;br /&gt;
*JSubMenuHelper (use JHtmlSidebar instead; note that in contrast to JSubMenuHelper, this requires an addition of a placeholder in your view template)&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== JInstallerAdapter Inheritance ==== &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
JInstallerAdapter no longer extends from JAdapterInstance and inherently JObject.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:110--&amp;gt; Custom Installer Adapters must now be autoloaded.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Menu === &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== JMenu is now an abstract class ==== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
JMenu is now an abstract class. Subclasses of JMenu must now also implement a load method.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Manual Include Behavior Removed ==== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
The logic in JMenu::getInstance() to manually include a file from the application&#039;s includes/menu.php path has been removed. The JMenu subclass should be autoloaded instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== JMenuItem ==== &amp;lt;!--T:216--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:217--&amp;gt;&lt;br /&gt;
* You can no longer retrieve the params property from JMenuItem directly. Use the getParams() method instead (available since Joomla 3.7)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:218--&amp;gt;&lt;br /&gt;
* JMenuItem::set and JMenuItem::get have been removed. Properties must be explicitly named&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:219--&amp;gt;&lt;br /&gt;
* There is now a AdministratorMenuItem class which extends from MenuItem that contains extra public properties used for the Administrator menu item.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Pagination === &amp;lt;!--T:220--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:221--&amp;gt;&lt;br /&gt;
* The magic pagination functions &#039;&#039;pagination_item_active&#039;&#039;, &#039;&#039;pagination_item_inactive&#039;&#039; have been removed. Use the JLayout&#039;s joomla.pagination.link instead&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:222--&amp;gt;&lt;br /&gt;
* The magic pagination function &#039;&#039;pagination_list_render&#039;&#039; is deprecated. Use the JLayout joomla.pagination.list instead&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Pathway === &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Manual Include Behavior Removed ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
The logic in JPathway::getInstance() to manually include a file from the application&#039;s includes/pathway.php path has been removed. The JPathway subclass should be autoloaded instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Router === &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Manual Include Behavior Removed ==== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
The logic in JRouter::getInstance() to manually include a file from the application&#039;s includes/router.php path has been removed. The JRouter subclass should be autoloaded instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Method Signature Changes ==== &amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:112--&amp;gt; The attachBuildRule and attachParseRule are now typehinted to require callables.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== JVersion === &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Support for accessing the JVersion class constants as class properties is no longer supported. The constants were introduced in Joomla! 3.5 to prevent the old class properties from being edited.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:113--&amp;gt; The following deprecated constants have been removed:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== JHtml === &amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:115--&amp;gt; The register function in JHtml is now typehinted to require a callable. Subclasses of JHtml will now need to match this signature (note this was already required at the function code level already).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:116--&amp;gt; JHtml::_ no longer allows you to call non-public methods in JHtml&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:117--&amp;gt; JHtml::_ is now a final method (you can no longer override it if you subclass JHtml) and its signature has changed to take advantage of modern PHP features (scalar and variadic typehints)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:191--&amp;gt; JHtmlBootstrap::modal has been removed. Use JHtmlBootstrap::renderModal&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:223--&amp;gt; JHtmlSortablelist::sortable has been deprecated in favour of JHtmlDraggablelist::draggable - the old method acts as a proxy to the new method currently to facilitate the removal of jQuery UI from Joomla Core. All media assets relating to the original jQuery UI implementation have been removed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:224--&amp;gt; JHtmlBatch has been removed as all the code had been moved to layouts for template overrides. Use the JLayouts directly in your code.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Updater === &amp;lt;!--T:209--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:210--&amp;gt;&lt;br /&gt;
* We removed the deprecated integer client handling from the updater extension adapter class. Please use &#039;&#039;&#039;site&#039;&#039;&#039; and &#039;&#039;&#039;administrator&#039;&#039;&#039; now and not the integer values &#039;&#039;&#039;0&#039;&#039;&#039; / &#039;&#039;&#039;1&#039;&#039;&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Platform == &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The following changes have been made to Joomla! Platform libraries. This is primarily code found in the &#039;&#039;libraries/joomla&#039;&#039; or &#039;&#039;libraries/legacy&#039;&#039; directories in Joomla! 3.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Access === &amp;lt;!--T:225--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:226--&amp;gt;&lt;br /&gt;
* JAccess::$assetPermissionsById and JAccess::$assetPermissionsByName and JAccess::preloadPermissionsParentIdMapping have been removed without replacement. Since 3.6 we&#039;ve used other methods and class properties to optimize the loading of assets. See the [https://github.com/joomla/joomla-cms/pull/12850 JAccess bug fixes and optimizations pull request] to see the reasons for this deprecation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:227--&amp;gt;&lt;br /&gt;
* JAccess::getActions has been removed. Use JAccess::getActionsFromFile or JAccess::getActionsFromData instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Application === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Removed Classes ==== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
The following classes have been removed in Joomla! 4.0:&lt;br /&gt;
*JApplicationWebRouter (use the `joomla/router` package instead)&lt;br /&gt;
*JApplicationWebRouterBase (use the `joomla/router` package instead)&lt;br /&gt;
*JApplicationWebRouterRest (use the `joomla/router` package instead)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:228--&amp;gt;&lt;br /&gt;
All references to JSite and JAdministrator have been removed (these were just class alias&#039; since Joomla 3.2)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Deprecated Classes ==== &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The following classes have been deprecated and scheduled for removal in Joomla! 5.0:&lt;br /&gt;
*JApplicationBase (use Joomla\Application\AbstractApplication instead)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== CLI/Web Class Changes ==== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
The JApplicationCli and JApplicationWeb classes have been recomposed to extend from the Framework&#039;s Application package instead. This breaks type checks for a JApplicationBase object. For forward compatibility, it is recommended to check if application classes are an instance of Joomla\Application\AbstractApplication (JApplicationBase has extended this class since Joomla! 3.4).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
Additionally, both of these classes are now abstract. Developers implementing these classes must provide a &#039;&#039;doExecute&#039;&#039; method with their application&#039;s logic.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:118--&amp;gt; The registerEvent method is now typehinted to require a callable for the $handler parameter.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:178--&amp;gt; Applications that want to support both Web and CLI Applications should now typehint against the \Joomla\CMS\Application\ CMSApplicationInterface - this contains common methods (some of which in Joomla 3.x were only found in the JApplicationCms class) that can be used by all code. It&#039;s strongly recommended any custom applications (especially CLI applications) implement this interface to make compatibility checks easier, simultaneously any typehints should use the interface rather than a concrete class.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Old:&amp;lt;/translate&amp;gt; JApplicationCli{{rarr}}JApplicationBase{{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
New:&amp;lt;/translate&amp;gt; JApplicationCli{{rarr}}Joomla\Application\AbstractCliApplication{{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
Old:&amp;lt;/translate&amp;gt; JApplicationWeb{{rarr}}JApplicationBase{{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
New:&amp;lt;/translate&amp;gt; JApplicationWeb{{rarr}}Joomla\Application\AbstractWebApplication{{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:179--&amp;gt;&lt;br /&gt;
* The legacy ways of calling JApplicationWeb::redirect have been removed&lt;br /&gt;
** With a message and messageType parameters. (Call enqueueMessage separately.)&lt;br /&gt;
** Passing in a true/false value as the 2nd/3rd parameters instead of a redirect code will give an InvalidArgumentException instead of defaulting to a 303.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:180--&amp;gt; * JApplicationWeb::$singleValueResponseHeaders has been removed because the Framework Application will be internally using PSR-7 Response objects as of its 2.0 release. This changes how the headers data is stored so it is always a multi-dimensional array with each top level key being the header names and the value being an array holding all of the values for that header.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:119--&amp;gt; The $_clientId, $_messageQueue and $_name class properties have all been renamed to remove their underscore prefix.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:181--&amp;gt; Now implements CMSApplicationInterface.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:182--&amp;gt; If there is an error retrieving a Pathway, Router or Menu object using the respective methods, the exception will now bubble up rather than the method silently catching the exception and returning null.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:183--&amp;gt; CMSApplication::getInstance will now additionally try to load the user object (using the loadIdentity function).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:206--&amp;gt; CMSApplication::isSite and CMSApplication::isAdmin have been removed as with the addition of the ConsoleApplication and ApiApplication can give misleading results. Please use CMSApplication::isClient (available from {{JVer | 3.7}}). For more information please see [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover on which client your extension code is running]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:120--&amp;gt;&lt;br /&gt;
The $_language_filter and $_detect_browser class properties have all been renamed to remove their underscore prefix.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:121--&amp;gt; The deprecated method JApplicationSite::getPageParameters has been removed in favour of its alias JApplicationSite::getParams&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:122--&amp;gt; JApplicationHelper::parseXMLLangMetaFile has been removed without replacement.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Archive === &amp;lt;!--T:123--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:124--&amp;gt; The archive package has been removed in favour of the frameworks archive package. Note the API should remain unchanged.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:184--&amp;gt; Errors handing now uses Exceptions rather than JError&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Client ===&lt;br /&gt;
\Joomla\CMS\Client\ClientWrapper &amp;lt;translate&amp;gt;&amp;lt;!--T:229--&amp;gt; has been removed. Use the static methods in&amp;lt;/translate&amp;gt; \Joomla\CMS\Client\ClientHelper&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport &amp;lt;translate&amp;gt;&amp;lt;!--T:230--&amp;gt; has been removed without replacement as all PHP versions Joomla 4 matches will support strong password hashing.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Removed Classes ==== &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
The following ciphers have been removed in Joomla! 4.0:&amp;lt;/translate&amp;gt;&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
These have been removed without replacement. Use JCryptCipherCrypto&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Removed Methods ==== &amp;lt;!--T:167--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:185--&amp;gt; JCrypt::hasStrongPasswordSupport has been removed without replacement (this attempted to detect bcrypt polyfills on linux hosting but has always returned true since we required PHP 5.3.10 in Joomla 3.3)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Cache === &amp;lt;!--T:186--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:126--&amp;gt; JCacheController::get now requires a callable. As a result JCacheControllerCallback::call has been removed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:127--&amp;gt; JCacheStorage::test has been removed. Use JCacheStorage::isSupported instead&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:128--&amp;gt; The default storage engines are no longer manually loaded as they are now autoloaded&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:129--&amp;gt; JCacheControllerOutput::start and JCacheControllerOutput::end have been removed without replacement&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:130--&amp;gt; Removed CacheLite storage as it not compatible with PHP7 (which is our minimum version)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:187--&amp;gt; Error handling now uses Exceptions instead of JError&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Component === &amp;lt;!--T:131--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:132--&amp;gt; \Joomla\CMS\Component\ComponentRecord no longer extends JObject&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Document === &amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Inheritance Change ==== &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
The following classes have had their inheritance changed:&lt;br /&gt;
*JDocumentError (now extends from \Joomla\Cms\Document\HtmlDocument instead of \Joomla\Cms\Document\Document)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:133--&amp;gt; Note as a result of this change rendering an error page resets the document object in Joomla\CMS\Factory::$document, the rationale being we want a clean document to work from; if the error page is triggered we aren&#039;t interested in the metadata your component has set, or the media added from some bad module, or whatever plugins are adding to the display. We want a clean environment for rendering the error page only containing the error page&#039;s loaded data.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Renderers ==== &amp;lt;!--T:134--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:135--&amp;gt; In order to comply with the RSS feed specification, JDocumentRendererFeedRss now allows the lastBuildDate element to be configured using the JDocumentFeed::$lastBuildDate class property when a feed is rendered.  This value defaults to the current time, as is the case with Joomla! 3.x and earlier, however the time can be correctly set by changing this class property to a JDate object representing the desired timestamp.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:136--&amp;gt; There is now a RendererInterface that all Renderers should implement&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:137--&amp;gt; JDocumentRenderer is now an abstract class and implements RendererInterface&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:188--&amp;gt; As an alternative to &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; you can now individually load &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; for metadata, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; for CSS and &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; for JavaScript. The intention of this is to optionally allow users to place all JavaScript at the bottom of the HTML Document in their templates.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
The property type of JDocumentFeed::$lastBuildDate has changed from a string to a JDate object. The property was previously unused by the core Joomla API but extensions may have used it.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Database === &amp;lt;!--T:138--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:139--&amp;gt; This package has been replaced by the Joomla Framework Database Package&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:197--&amp;gt; Debug mode has been reworked (see the framework docs for more information&amp;lt;/translate&amp;gt; [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:140--&amp;gt; Factory::getApplication no longer takes arguments. These were misleading as it always returned the active application after the first call in the bootstrap, whatever arguments were passed into the function.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:141--&amp;gt; Factory::getXml has been removed along with JXMLElement. Use SimpleXMLElement directly instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:142--&amp;gt; Factory:: getEditor has been removed use JEditor::getInstance instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Environment === &amp;lt;!--T:198--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Filesystem === &amp;lt;!--T:207--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:208--&amp;gt; The filesystem wrapper classes have been removed. Continue using the original static methods.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filter ===&lt;br /&gt;
* JFilterInput::_remove &amp;lt;translate&amp;gt;&amp;lt;!--T:231--&amp;gt; has been removed in favour of&amp;lt;/translate&amp;gt; JFilterInput::remove&lt;br /&gt;
* JFilterInput::_cleanTags &amp;lt;translate&amp;gt;&amp;lt;!--T:232--&amp;gt; has been removed in favour of&amp;lt;/translate&amp;gt; JFilterInput::cleanTags&lt;br /&gt;
* JFilterInput::_cleanAttributes &amp;lt;translate&amp;gt;&amp;lt;!--T:233--&amp;gt; has been removed in favour of&amp;lt;/translate&amp;gt; JFilterInput::cleanAttributes&lt;br /&gt;
* JFilterInput::_decode &amp;lt;translate&amp;gt;&amp;lt;!--T:234--&amp;gt; has been removed in favour of&amp;lt;/translate&amp;gt; JFilterInput::decode&lt;br /&gt;
* JFilterInput::_escapeAttributeValues &amp;lt;translate&amp;gt;&amp;lt;!--T:235--&amp;gt; has been removed in favour of&amp;lt;/translate&amp;gt; JFilterInput::escapeAttributeValues&lt;br /&gt;
* JFilterInput::_stripCSSExpressions &amp;lt;translate&amp;gt;&amp;lt;!--T:236--&amp;gt; has been removed in favour of&amp;lt;/translate&amp;gt; JFilterInput::stripCSSExpressions&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:237--&amp;gt;&lt;br /&gt;
All of the above deprecations and removals are to allow the class to be reunified with the framework parent class.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:143--&amp;gt; The libraries/joomla/form/fields and libraries/joomla/form/rules directories are no longer registered to find form classes, all form classes should be autoloaded instead&amp;lt;/translate&amp;gt;&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:192--&amp;gt; Two new properties added addfieldprefix which registers a namespace prefix for extensions (intended to be used as a replacement for addfieldpath). For example usage please see [https://github.com/joomla/joomla-cms/pull/16419 this Github PR]&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:193--&amp;gt; JForm::getControlGroup has been removed use the alias JForm::renderField (available since Joomla 3.2.3)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:194--&amp;gt; JForm::getControlGroups has been removed use the alias JForm::renderFieldset (available since Joomla 3.2.3)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:238--&amp;gt;&lt;br /&gt;
* When rendering a field using the hiddenLabel option in JForm - it now only hides the label from the User Interface - the html is still rendered with the sr-only class for screen-reader accessibility purposes.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:199--&amp;gt; JFormFieldUsergroup has been removed. Use Joomla\CMS\Form\Field\UsergrouplistField instead (available since Joomla 3.2)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:239--&amp;gt;&lt;br /&gt;
* The Form class has removed the protected methods filterField() and validateField(). This will break any custom Form classes that extends core Form and use these methods. This has been replaced in favour of filtering at the field level (see https://github.com/joomla/joomla-cms/pull/12414 for more information)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:205--&amp;gt;&lt;br /&gt;
JFormFieldFilelist and JFormFieldFolderList have had their filter properties renamed to &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; respectively (in order to allow the use of the regular Joomla filter attribute on returned values)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* JFormPredefinedlistField &amp;lt;translate&amp;gt;&amp;lt;!--T:240--&amp;gt; has its filter properties renamed to&amp;lt;/translate&amp;gt; &amp;lt;code&amp;gt;optionsFilter&amp;lt;/code&amp;gt; (in order to allow the use of the regular Joomla filter attribute on returned values)&lt;br /&gt;
* JFormFieldEditor::save &amp;lt;translate&amp;gt;&amp;lt;!--T:241--&amp;gt; has been removed without replacement&amp;lt;/translate&amp;gt;&lt;br /&gt;
* JFormFieldText::getSuggestions &amp;lt;translate&amp;gt;&amp;lt;!--T:242--&amp;gt; has been removed in favour of&amp;lt;/translate&amp;gt; JFormFieldText::getOptions&lt;br /&gt;
&lt;br /&gt;
=== Wrapper ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:243--&amp;gt; * The form wrapper classes have been removed. Continue using the original static methods.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Deprecated Classes and Interfaces ==== &amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
The following classes and interfaces have been deprecated and scheduled for removal in Joomla! 5.0:&lt;br /&gt;
*JHttpResponse (use Joomla\Http\Response instead)&lt;br /&gt;
*JHttpTransport (implement Joomla\Http\TransportInterface instead)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Class Changes ==== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
The Framework&#039;s HTTP package is now included in Joomla! 4.0 and JHttp and the JHttpTransport subclasses have been refactored to use the upstream package.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
The JHttp class constructor has been loosened with the following changes:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
*The options parameter is no longer typehinted as a Joomla\Registry\Registry object, an array or any object implementing the [https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] interface can be used instead&lt;br /&gt;
*The transport parameter now allows any Joomla\Http\TransportInterface object.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
The now deprecated JHttpTransport interface extends Joomla\Http\TransportInterface now and has caused backward compatibility breaking changes in the interface.  The constructor is no longer part of the interface, and the interface&#039;s `request()` method has had a signature change.  Specifically, the second parameter which previously typehinted the JUri class now typehints Joomla\Uri\UriInterface.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
In refactoring the response object to inherit from the Framework&#039;s HTTP package, which is now using the PSR-7 ResponseInterface API, a minor compatibility break has been made in the structure of the response headers.  As of 4.0, this will now always be a multi-dimensional array where the key is the header name and the value is an array of values for that header (previously, this was a string).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Image === &amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Deprecated Classes and Interfaces ==== &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
The following classes and interfaces have been deprecated and scheduled for removal in Joomla! 5.0:&lt;br /&gt;
* JImageFilter (use Joomla\CMS\Image\ImageFilter instead)&lt;br /&gt;
* JImageFilterBackgroundfill (use Joomla\CMS\Image\Filter\Backgroundfill instead)&lt;br /&gt;
* JImageFilterBrightness (use Joomla\CMS\Image\Filter\Brightness instead)&lt;br /&gt;
* JImageFilterContrast (use Joomla\CMS\Image\Filter\Contrast instead)&lt;br /&gt;
* JImageFilterEdgedetect (use Joomla\CMS\Image\Filter\Edgedetect instead)&lt;br /&gt;
* JImageFilterEmboss (use Joomla\CMS\Image\Filter\Emboss instead)&lt;br /&gt;
* JImageFilterGrayscale (use Joomla\CMS\Image\Filter\Grayscale instead)&lt;br /&gt;
* JImageFilterNegate (use Joomla\CMS\Image\Filter\Negate instead)&lt;br /&gt;
* JImageFilterSketchy (use Joomla\CMS\Image\Filter\Sketchy instead) &lt;br /&gt;
* JImageFilterSmooth (use Joomla\CMS\Image\Filter\Smooth instead)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Class Changes ==== &amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
The classes from Framework&#039;s Image package have been inlined into CMS and JImage and the JImageFilter subclasses have been refactored to use them. I.e. all classes under Joomla\Image namespace moved to Joomla\CMS\Image namespace.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Menu === &amp;lt;!--T:144--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:145--&amp;gt; JMenu::$_items, JMenu::$_default and JMenu::$_active have been had their underscore prefix&#039;s removed (note these properties were protected so this only affects custom subclasses of JMenu)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== New MVC Layer ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:244--&amp;gt;&lt;br /&gt;
* This has been removed in Joomla 4. We have decided that this effort was not successful and as a result have continued development work on the original MVC Layer (see the &amp;quot;Legacy MVC&amp;quot; section). There is a plugin located [https://github.com/joomla-extensions/legacy-mvc on GitHub] you can ship with your extensions whilst you migrate them back to the Legacy MVC (note that this is not shipped by default in Joomla 4).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:146--&amp;gt; Removing the keychain with 4.0 has resulted in the removal of the following class:&amp;lt;/translate&amp;gt;&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:147--&amp;gt; JPathway::$_pathway and JPathway::$_count have been had their underscore prefix&#039;s removed (note these properties were protected so this only affects custom subclasses of JPathway)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:148--&amp;gt; JPathway::_makeItem has been removed in favour of JPathway::makeItem (note this method was protected so this only affects custom subclasses of JPathway)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Profiler ===&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:245--&amp;gt; JProfiler::getmicrotime and JProfiler::getMemory have been removed in favour of the native PHP methods they wrapped (&amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;microtime(1)&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;memory_get_usage()&amp;lt;/source&amp;gt; respectively&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Table === &amp;lt;!--T:149--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:150--&amp;gt;&lt;br /&gt;
* JTable::__construct database object is now typehinted to be a JDatabaseDriver.&lt;br /&gt;
** Subclasses of JTable will need to ensure they are passing a JDatabaseDriver object to the parent constructor&lt;br /&gt;
** Subclasses of JTable will need to change the method signature of setDbo() if they have an extended version of that method to include the typehint&lt;br /&gt;
* There is a new method JTable::hasField - all instances of property_exists on JTable instances will now use this proxy method instead to allow better interoperability of Table instances&lt;br /&gt;
* The JTableObserver pattern (and corresponding classes) has been removed from JTable. JTable now triggers events and Tags, Content History (and any other custom uses of this pattern) should move to standard plugins.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Mail === &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
The following methods have been removed in Joomla! 4.0:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* JMail::sendAdminMail has been removed&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Exceptions ====&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:246--&amp;gt; JMail no longer catches exceptions from PHPMailer. It is now the object calling JMail&#039;s responsibility to handle these exceptions as appropriate. In addition if mail sending is disabled in global configuration calling &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;\ Joomla\CMS\Mail\Mail::send()&amp;lt;/source&amp;gt; will throw a &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;\Joomla\CMS\Mail\Exception\MailDisabledException&amp;lt;/source&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Language === &amp;lt;!--T:151--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
* The functions setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback and setSearchDisplayedCharactersNumberCallback are now typehinted to require a callable.&lt;br /&gt;
* The &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; placeholder for double quotes has been removed (this only existed to work around an old PHP Bug that has been fixed). Escape double quotes if required (i.e. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:247--&amp;gt;&lt;br /&gt;
* The format for language file names has been changes to ease the work in 3rd party translation tools (such as crowdin). INI language files no longer have to contain the language code (i.e. en-GB.com_contact.ini =&amp;gt; com_contact.ini), in this case the special case of en-GB.ini has been renamed to joomla.ini in the core language pack. en-GB.xml has been named langmetadata.xml. There is a b/c layer that will continue to read the old Joomla 3 file names throughout Joomla 4.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:248--&amp;gt;&lt;br /&gt;
* \Joomla\CMS\Language\Multilanguage::getSiteLangs has been removed. Use \Joomla\CMS\Language\LanguageHelper::getInstalledLanguages(0) instead&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:249--&amp;gt;&lt;br /&gt;
* JLanguage::exists has been removed. Use Joomla\CMS\Language\LanguageHelper::exists instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:250--&amp;gt;&lt;br /&gt;
* The wrapper classes JTextWrapper, LanguageHelperWrapper and TransliterateWrapper have been removed. Continue to use the static methods they wrapped.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* The pdf_fonts handling/support for language packs (&amp;lt;code&amp;gt;language/pdf_fonts&amp;lt;/code&amp;gt;) has been removed from the language installer ([https://github.com/joomla/joomla-cms/pull/31288 see GitHub PR #31288]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Legacy MVC Layer === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Legacy Controller ==== &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* JControllerLegacy has been removed from the legacy layer, and we no longer intend to remove it or its subclasses in the near future.&lt;br /&gt;
* JControllerLegacy no longer extends JObject. Controllers should not call any of the methods contained in the JObject class.&lt;br /&gt;
* JControllerLegacy implements an interface for multiple task controllers&lt;br /&gt;
* JControllerLegacy::_construct now takes additional arguments. If you were previously getting a Controller object through JControllerLegacy::getInstance you do not need to change your code.&lt;br /&gt;
** Parameter 2: An optional MVCFactoryInterface instance&lt;br /&gt;
** Parameter 3: An optional CMSApplicationInterface instance&lt;br /&gt;
** Parameter 4: An optional Input instance&lt;br /&gt;
** Parameter 5: An optional FormFactoryInterface instance&lt;br /&gt;
* JControllerForm now uses the StringInflector package to determine the list view. This should improve its ability to determine the list view of more view names. If extension developers find that their list view is no longer being found they should manually set the &#039;&#039;view_list&#039;&#039; class property in their controller.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Legacy View ==== &amp;lt;!--T:153--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:154--&amp;gt;&lt;br /&gt;
* JViewLegacy has been removed from the legacy layer, and we no longer intend to remove it or its subclasses in the near future.&lt;br /&gt;
* JViewHtml has been split into two classes - AbstractView and HtmlView. Abstract view contains the logic for accessing models and getting the name of the view and is intended to be a base class for non-Html views. Html view contains the same logic as before.&lt;br /&gt;
* There are now two subclasses of JViewHtml - \Joomla\CMS\MVC\View\ListView and \Joomla\CMS\MVC\View\FormView designed to speed up the development of list and form views and reduce code duplication.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:251--&amp;gt;&lt;br /&gt;
* JLibraryHelper::_load has been removed. Use \Joomla\CMS\Helper\LibraryHelper::loadLibrary instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Session === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
The session package has undergone a major refactoring to use the Framework&#039;s Session package. This change primarily affects the internals of the package; changes to the primary public API through the JSession class are minimal.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:195--&amp;gt; The old JString class alias has been removed. Use \Joomla\String\StringHelper instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Removed Classes and Interfaces ==== &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
The following classes and interfaces have been removed in Joomla! 5.0:&amp;lt;/translate&amp;gt;&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== JSession ==== &amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
JSession now extends from the Framework&#039;s Joomla\Session\Session class. Many of the methods have a modified signature and a compatibility layer exists to help with the transition.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===== Namespace Parameter Deprecated ===== &amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
The &#039;&#039;get&#039;&#039;, &#039;&#039;set&#039;&#039;, &#039;&#039;has&#039;&#039; and &#039;&#039;clear&#039;&#039; methods previously supported a namespace parameter. This parameter is now deprecated. The namespace should be prepended to the name before calling these methods.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===== JSession::clear() Repurposed ===== &amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
In the Joomla\Session\Session class, the &#039;&#039;clear&#039;&#039; method is used to clear all data from the session store. In JSession, this method is used to remove a single key. When this method is called with parameters, it will call the new &#039;&#039;Joomla\Session\Session::remove()&#039;&#039; method.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===== JSession::getInstance() Deprecated ===== &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
The singleton &#039;&#039;getInstance()&#039;&#039; method has been deprecated. The session object should be retrieved from the active application or the dependency injection container instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===== Session Handlers ===== &amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
In Joomla! 3.x and earlier, session handlers were represented by the JSessionStorage class and its subclasses. In Joomla! 4.0, session handlers are now implementations of Joomla\Session\HandlerInterface (which is an extension of PHP&#039;s [https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface]. All handlers which were supported in Joomla! 3.x are still available in 4.0 in addition to two additional handlers: a handler natively implementing the APCu extension and a handler supporting Redis.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Social Media Libraries === &amp;lt;!--T:155--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:156--&amp;gt; The facebook, github, google, linkedin, openstreetmap, mediawiki and twitter packages have all been removed from the CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== User ===&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:252--&amp;gt; JUser::getParameters has been removed. You can no longer retrieve all parameters for a user but instead use JUser::getParam to get individual parameters as required.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Helper ====&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:253--&amp;gt; JUserHelper::getCryptedPassword has been removed. Joomla 4 only supports hashing with the native PHP password_hash function (via JUserHelper::hashPassword (available since Joomla 3.2.1))&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:254--&amp;gt; JUserHelper::getSalt has been removed without replacement (it generated the hash&#039;s JUserHelper::getCryptedPassword which is now removed as above)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:255--&amp;gt; JUserHelper::invalidateCookie, JUserHelper::clearExpiredTokens and JUserHelper::getRememberCookieData have been removed without replacement. They had been unused in core since Joomla 3.2 when their logic was moved into the Cookie Authentication Plugin&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:256--&amp;gt; JUserWrapperHelper has been removed. Continue using the original static methods in JUserHelper.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Classes Removed Without Replacement === &amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError &amp;lt;translate&amp;gt;&amp;lt;!--T:189--&amp;gt; (use native exceptions when error handling is required)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Utilities ==== &amp;lt;!--T:102--&amp;gt; &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===== Removed Classes and Interfaces ===== &amp;lt;!--T:103--&amp;gt; &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
The following classes and interfaces have been removed in Joomla! 4.0:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
use Joomla\Utilities\ArrayHelper; instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== External Libraries == &amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
The following changes have been made to the external libraries that Joomla! packages and ships.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
Joomla! 4.0 ships with PHPMailer 6.0.  Please review [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md the upgrading guide] for relevant changes.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
At Joomla! 3.4, the PHPUTF8 library lived in two locations in the Joomla! package; `libraries/phputf8` and `libraries/vendor/joomla/string/src/phputf8`.  In Joomla! 4.0, the copy of the library in `libraries/phputf8` has been removed.  The Joomla\String\StringHelper class exposes many of the library&#039;s functions and the Composer autoloader definition imports much of the library as well, however, if you need a feature that is not already included then you should import the required functions from the `libraries/vendor/joomla/string/src/phputf8` path.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
The SimplePie library is no longer included with Joomla! 4.0.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
Joomla! 4.0 ships with jQuery 3.  Please review [https://jquery.com/upgrade-guide/3.0/ the upgrading guide] for relevant changes. Note that we are not including jQuery Migrate anymore either. We recommend using it locally to help debug your code if there are any issues.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== jQuery UI ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:257--&amp;gt; jQuery UI has been removed from Joomla 4. Whilst it hasn&#039;t been officially announced as dead, there hasn&#039;t been a release of jQuery UI since 2016.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
Joomla! 4.0 ships with Bootstrap 5. Bootstrap 2.3.2 has been removed, however we have left some BS2 classes in to ease the migration (e.g. The old BS2 element-invisible still exists for screenreaders)&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:157--&amp;gt; FOF 2.x has been removed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Templates == &amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
All the Joomla! 3 templates - ISIS and Hathor in the backend, and Protostar and Beez in the frontend are no longer supported. The new 4.0 backend template is called Atum and the frontend template is called Cassiopeia.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:158--&amp;gt; As a consequence, all extensions must migrate to the new Bootstrap 5 style, away from the current Bootstrap 2.3.2 implementation. For more information about Bootstrap, visit the [https://getbootstrap.com/docs/5.0/getting-started/introduction/] Website and the [https://getbootstrap.com/2.3.2/ Bootstrap 2.3.2] Website.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:258--&amp;gt; Joomla 4 will load the template favicon first rather than the one in the Joomla Root in keeping with the concept the template is the single source of truth.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:259--&amp;gt; Frontend components and module views now use Block Element Modifier (BEM) class markup to make it easier for templates to support frameworks other than bootstrap. See the [http://getbem.com/ BEM Website] for more information on how to build similar classes.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:260--&amp;gt; There where also changes to options of the core components that you should take a look at when your tempalte should support 3.x and 4.x at the same time: https://docs.joomla.org/J4.x:Changed_parameters_for_template_providers&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Other == &amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:261--&amp;gt; The &#039;&#039;$_PROFILER&#039;&#039; global variable has been removed. Use &#039;&#039;\Joomla\CMS\Profiler\Profiler::getInstance&#039;&#039; instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Media in Libraries === &amp;lt;!--T:159--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:160--&amp;gt; No media is allowed in the libraries root folder in the CMS. All assets associated with Joomla libraries should be put in the media folder per best practices. Direct access is blocked with a &#039;&#039;.htaccess&#039;&#039; and the &#039;&#039;web.config&#039;&#039; file in the root of the libraries directory.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Bin === &amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
Removing the keychain with 4.0 has resulted in the removal of the entire Bin directory as it only contained keychain.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Components === &amp;lt;!--T:200--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:201--&amp;gt; All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:202--&amp;gt; com_admin profile view has been removed. (This appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:203--&amp;gt; com_actionlogs PHP 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:262--&amp;gt; com_actionlogs CSV export headers have been changed to match the strings shown in the UI.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:204--&amp;gt; Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:263--&amp;gt; The MailTo component has been removed without replacement. If you used this functionality you will need to find an alternative component on JED.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:264--&amp;gt; In com_contact &#039;s frontend contact view - the contact property has been removed as it was a duplicate of the item property. We chose to keep $this-&amp;gt;item as it was consistent with that in the article and tag views. Template overrides will need updating to reflect this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:265--&amp;gt; The repeatable field in com_fields has been removed in favour of the new subform field. Data from repeatable fields is automatically migrated to the new subform field but is stored in a different format.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:266--&amp;gt; The xreference fields have been removed from &#039;&#039;#__contact_details&#039;&#039;, &#039;&#039;#__content&#039;&#039; and &#039;&#039;#__newsfeeds&#039;&#039; as they were unused.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Plugins === &amp;lt;!--T:161--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:162--&amp;gt; The Gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:163--&amp;gt; Google reCAPTCHA v1 support has been fully removed from the CAPTCHA plugin. This hasn&#039;t worked since Q2 2018. Google dropped support for it.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:164--&amp;gt; The reCAPTCHA plugin now uses Google&#039;s official PHP library for CAPTCHA under the hood&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:168--&amp;gt; For plugins using the 3.x compatibility layer, the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:267--&amp;gt; For plugins using the 3.x compatibility layer, for any type hints for events that require a class, that class &#039;&#039;&#039;must&#039;&#039;&#039; be autoloaded before the plugin is instantiated.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:190--&amp;gt; The onContentBeforeSave event now requires the data parameter. This has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:268--&amp;gt; Returning before calling &amp;lt;source lang=&amp;quot;php&amp;quot; inline&amp;gt;parent::__construct()&amp;lt;/source&amp;gt; in the constructor of a plugin is no longer supported to avoid queuing the plugin into the event dispatcher.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:269--&amp;gt; &#039;&#039;onUserBeforeDataValidation&#039;&#039; is deprecated as an event in favor of &#039;&#039;onContentBeforeValidateData&#039;&#039; (The event was usable by all content types and was not specific to users. Note that both events will be called for the duration of Joomla 4. You should migrate your code to the new event when you no longer need to support Joomla 3.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Administrator Helpers === &amp;lt;!--T:169--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:170--&amp;gt; JAdministratorHelper has been removed without replacement. (It&#039;s been merged into JApplicationAdministrator.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:171--&amp;gt; JSubMenuHelper has been removed without replacement. (Use JHtmlSidebar instead - available since 3.0.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:172--&amp;gt; JToolbarHelper has been moved to the main libraries directory.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Modules === &amp;lt;!--T:173--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:174--&amp;gt; The administrator module &#039;&#039;submenu&#039;&#039; has been removed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:270--&amp;gt; Logic of &#039;&#039;Module Chromes&#039;&#039; (module styles) in template files &amp;lt;code&amp;gt;html/modules.php&amp;lt;/code&amp;gt; have been moved to &amp;lt;code&amp;gt;JLayout&amp;lt;/code&amp;gt; files. &amp;lt;code&amp;gt;modChrome_x&amp;lt;/code&amp;gt; functions in &amp;lt;code&amp;gt;modules.php&amp;lt;/code&amp;gt; are no longer supported. See https://github.com/joomla/joomla-cms/pull/23570 for details.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:271--&amp;gt; &#039;&#039;Module Chromes&#039;&#039; (module styles) &amp;lt;code&amp;gt;modChrome_horz&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;modChrome_xhtml&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;modChrome_rounded&amp;lt;/code&amp;gt; have been removed from template &amp;lt;code&amp;gt;system&amp;lt;/code&amp;gt; without replacement.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:272--&amp;gt; Module Class Suffixes have been renamed and standardized. These are now called Module Class and are appended to the list of classes in the Module Chrome. (They are no longer rendered in the module output itself.)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Error Handling === &amp;lt;!--T:165--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:166--&amp;gt; Joomla will now handle PHP&#039;s E_USER_DEPRECATED errors and pipes it into JLog - this is useful for handling deprecations in many 3rd party PHP Libraries (note it will block the page load if debug mode is enabled)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:175--&amp;gt; Joomla\CMS\Exception\ExceptionHandler now only operates on Exceptions thrown in JApplication::execute. We now use Symfony&#039;s ErrorHandler when this fails or exceptions are thrown outside of this. We expect this to have minimal effect on most users and should give a more helpful message in many cases than the traditional &amp;quot;Error displaying the error page&amp;quot; error for users when things go very wrong.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:176--&amp;gt; Joomla\CMS\Exception\ExceptionHandler is now format aware and will render errors in html, json, xml, feed or cli aware formats&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:177--&amp;gt; The Joomla\CMS\Exception\ExceptionHandler::render() signature is changed to include the Throwable typehint. Before 3.5 when PHP 7 support was added this was typehinted as Exception, and since 3.5 has been typechecked in the code itself.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Base Tag ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:273--&amp;gt; Previous Joomla versions set a &#039;&#039;&amp;lt;base&amp;gt;&#039;&#039; header tag of the current URL in the frontend. This has been removed as it served no clear purpose.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JavaScript ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:274--&amp;gt; The &#039;&#039;caption.js&#039;&#039; file has been removed from Joomla. Use the native HTML elements &#039;&#039;figure&#039;&#039; and &#039;&#039;figcaption&#039;&#039;. (You can look at JLayout in &#039;&#039;layouts/joomla/content/intro_image.php&#039;&#039; for an example).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Namespacing ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:275--&amp;gt; Class usage like &#039;&#039;$msg = JText::_( &#039;Hello man!&#039; );&#039;&#039; can now use namespacing. That would turn into &#039;&#039;$msg = Text::_( &#039;Hello man!&#039; );&#039;&#039;. To use namespacing, you need to add the proper namespace declaration. This should be added after the &#039;&#039;defined(&#039;_JEXEC&#039;) or die;&#039;&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:276--&amp;gt;&lt;br /&gt;
To find out the proper namespace you can either follow the instructions here: [https://groups.google.com/forum/#!topic/joomla-dev-general/1ua9zIqlcVc SO confused about namespace &amp;amp; enquemessage...] or use the generated file pdf reference file:&lt;br /&gt;
[[File:J! namespace reference.pdf|thumb]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Standard_form_field_types&amp;diff=758930</id>
		<title>Standard form field types</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Standard_form_field_types&amp;diff=758930"/>
		<updated>2020-10-18T17:03:48Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Numerous types of [[S:MyLanguage/form field|form field]] are built into Joomla!. The following table lists these standard types and their availability. Use the [[S:MyLanguage/Standard_form_field_types/Single-page_reference|single-page reference]] if you want to print all existing form field documentation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
{{JVer|1.5}} Please note that many of these fields are available as [[S:MyLanguage/Parameter|parameter types]] in Joomla! 1.5. For a list of parameter types, see [[S:MyLanguage/J1.5:Standard parameter types|J1.5:Standard parameter types]]. For a comparison between form field and parameter types, see [[S:MyLanguage/Standard form field and parameter types|Standard form field and parameter types]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;vertical-align:top; border:1px solid Sienna; background-color:Cornsilk;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:Wheat; font-weight:bold; text-align: left;&amp;quot;&lt;br /&gt;
!width=15%|&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Type&amp;lt;/translate&amp;gt;&lt;br /&gt;
!width=65%|&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Description&amp;lt;/translate&amp;gt;&lt;br /&gt;
!width=20%|&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Availability&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Accessiblemedia form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
accessiblemedia&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
provides modal access to the media manager for insertion of images with upload for users with appropriate permissions and an text field for adding a alternative text.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|4.0}} &amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Accesslevel form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
accesslevel&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
provides a drop down list of viewing access levels.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Cachehandler form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
cachehandler&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
provides a list of available cache handling options.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Calendar form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
calendar&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
provides a text box for entry of a date. An icon next to the text box provides a link to a pop-up calendar, which can also be used to enter the date value.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Captcha form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
captcha&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
provides the use of a captcha plugin.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Category form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
category&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
provides a drop down list of categories for an extension.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Checkbox form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
checkbox&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
provides a single checkbox to be checked or unchecked&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Checkboxes form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
checkboxes&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
provides unlimited checkboxes that can be used for multi-select.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/ChromeStyle form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Chrome Style&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
provides a list of template chrome style options grouped by template.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|3.0}} &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Color form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
color&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
provides a color picker when clicking the input box.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/ContentLanguage form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
Content Language&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
Provides a list of content languages.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Contenttype form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
Content Type&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
Provides a list of content types.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|3.1}} &amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Combo form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
combo&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
provides a combo box field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Componentlayout form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
componentlayout&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
provides a grouped list of core and template alternative layouts for a component item.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Contentlanguage form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
contentlanguage&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
provides a list of installed content languages for use in conjunction with the language switcher plugin.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/DatabaseConnection form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
Database Connection&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
Provides a list of available database connections, optionally limiting to a given list.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Editor form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
editor&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
provides an editor area field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|1.6}} &amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Editors form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
editors&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
Provides a drop down list of the available WYSIWYG editors. Since {{JVer|2.5}} use [[S:MyLanguage/Plugins form field type|plugins form field]] instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|1.6}}&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Email form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
email&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
provides an email field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/File form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
file&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
Provides an input field for files&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Filelist form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
filelist&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
provides a drop down list of files from a specified directory.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Folderlist form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
folderlist&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
provides a drop down list of folders from a specified directory.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Groupedlist form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
groupedlist&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
provides a drop down list of items organized into groups.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/HeaderTag form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
header tag&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
provides a drop down list of the header tags (h1-h6)&amp;lt;/translate&amp;gt;.&lt;br /&gt;
|{{JVer|3.0}} &amp;lt;translate&amp;gt;&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Helpsite form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
helpsite&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
provides a drop down list of the help sites for your Joomla installation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Hidden form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
hidden&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
provides a hidden field for saving a form field whose value cannot be altered directly by a user in the Administrator (it can be altered in code or by editing the &#039;&#039;params.ini&#039;&#039; file).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Imagelist form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
imagelist&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
provides a drop down list of image files in a specified directory.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Integer form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
integer&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
provides a drop down list of integers between a minimum and maximum.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Language form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
language&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
provides a drop down list of the installed languages for the Front-end or Back-end.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/List form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
list&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
provides a drop down list of custom-defined entries.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Media form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
media&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
provides modal access to the media manager for insertion of images with upload for users with appropriate permissions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Menu form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
menu&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
provides a drop down list of the available menus from your Joomla site.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Menuitem form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
Menu Item&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
provides a drop down list of the available menu items from your Joomla site.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[Meter form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
meter&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
Provides a meter to show value in a range.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|3.2}} &amp;lt;translate&amp;gt;&amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Modulelayout form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
Module Layout&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
provides a list of alternative layout for a module grouped by core and template.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/ModuleOrder form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
Module Order&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
Provides a drop down to set the ordering of module in a given position&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/ModulePosition form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
Module Position&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
provides a text input to set the position of a module.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:112--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/ModuleTag form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:113--&amp;gt;&lt;br /&gt;
Module Tag&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
provides a list of html5 elements (used to wrap a module in).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|3.0}} &amp;lt;translate&amp;gt;&amp;lt;!--T:115--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Note form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:116--&amp;gt;&lt;br /&gt;
note&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
supports a one line text field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|3.1}} &amp;lt;translate&amp;gt;&amp;lt;!--T:118--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Number form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:119--&amp;gt;&lt;br /&gt;
number&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:120--&amp;gt;&lt;br /&gt;
Provides a one line text box with up-down handles to set a number in the field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|3.2}} &amp;lt;translate&amp;gt;&amp;lt;!--T:121--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Password form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:122--&amp;gt;&lt;br /&gt;
password&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:123--&amp;gt;&lt;br /&gt;
provides a text box for entry of a password.  The password characters will be obscured as they are entered.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:124--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Plugins form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:125--&amp;gt;&lt;br /&gt;
plugins&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:126--&amp;gt;&lt;br /&gt;
provides a list of plugins from a given folder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:127--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Predefined List form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:128--&amp;gt;&lt;br /&gt;
predefinedlist&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:129--&amp;gt;&lt;br /&gt;
Form Field to load a list of predefined values.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|3.2}} &amp;lt;translate&amp;gt;&amp;lt;!--T:130--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Radio form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:131--&amp;gt;&lt;br /&gt;
radio&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:132--&amp;gt;&lt;br /&gt;
provides radio buttons to select different options.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:133--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Range form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:134--&amp;gt;&lt;br /&gt;
range&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:135--&amp;gt;&lt;br /&gt;
Provides a horizontal scroll bar to specify a value in a range.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|3.2}} &amp;lt;translate&amp;gt;&amp;lt;!--T:136--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Repeatable form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:137--&amp;gt;&lt;br /&gt;
repeatable&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:138--&amp;gt;&lt;br /&gt;
Allows form fields which can have as many options as the user desires.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|3.2}} &amp;lt;translate&amp;gt;&amp;lt;!--T:139--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Rules form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:140--&amp;gt;&lt;br /&gt;
rules&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:141--&amp;gt;&lt;br /&gt;
provides a matrix of group by action options for managing access control. Display depends on context.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:142--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Sessionhandler form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:143--&amp;gt;&lt;br /&gt;
sessionhandler&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:144--&amp;gt;&lt;br /&gt;
provides a drop down list of session handler options.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:145--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Spacer form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:146--&amp;gt;&lt;br /&gt;
spacer&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:147--&amp;gt;&lt;br /&gt;
provides a visual separator between form fields.  It is purely a visual aid and no value is stored.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:148--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/SQL form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:149--&amp;gt;&lt;br /&gt;
sql&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:150--&amp;gt;&lt;br /&gt;
provides a drop down list of entries obtained by running a query on the Joomla Database.  The first results column returned by the query provides the values for the drop down box.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:151--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/subform form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:189--&amp;gt;&lt;br /&gt;
subform&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:190--&amp;gt;&lt;br /&gt;
provides a way to use XML forms inside each other or reuse your existing forms inside your current form.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|3.6}} &amp;lt;translate&amp;gt;&amp;lt;!--T:191--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Tag form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
tag&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:153--&amp;gt;&lt;br /&gt;
provides an entry point for tags (either AJAX or Nested).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|3.1}} &amp;lt;translate&amp;gt;&amp;lt;!--T:154--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Tel form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:155--&amp;gt;&lt;br /&gt;
tel&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:156--&amp;gt;&lt;br /&gt;
provides an input field for a telephone number.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:157--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Templatestyle form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:158--&amp;gt;&lt;br /&gt;
templatestyle&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:159--&amp;gt;&lt;br /&gt;
provides a drop down list of template styles.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:160--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Text form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:161--&amp;gt;&lt;br /&gt;
text&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:162--&amp;gt;&lt;br /&gt;
provides a text box for data entry.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:163--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Textarea form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:164--&amp;gt;&lt;br /&gt;
textarea&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:165--&amp;gt;&lt;br /&gt;
provides a text area for entry of multi-line text.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:166--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Timezone form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:167--&amp;gt;&lt;br /&gt;
timezone&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:168--&amp;gt;&lt;br /&gt;
provides a drop down list of time zones.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:169--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/URL form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:170--&amp;gt;&lt;br /&gt;
URL&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:171--&amp;gt;&lt;br /&gt;
provides a URL text input field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:172--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/User form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:173--&amp;gt;&lt;br /&gt;
user&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:174--&amp;gt;&lt;br /&gt;
Field to select a user from a modal list. Displays User Name and stores User ID&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|1.6}} &amp;lt;translate&amp;gt;&amp;lt;!--T:175--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/UserActive form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:176--&amp;gt;&lt;br /&gt;
useractive&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:177--&amp;gt;&lt;br /&gt;
Field to show a list of available user active statuses.&amp;lt;/translate&amp;gt; &lt;br /&gt;
|{{JVer|3.2}} &amp;lt;translate&amp;gt;&amp;lt;!--T:178--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/Usergroup form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:179--&amp;gt;&lt;br /&gt;
usergroup&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:180--&amp;gt;&lt;br /&gt;
provides a drop down list of user groups. Since {{JVer|3.2}} use [[S:MyLanguage/User Group List form field type|usergrouplist]] instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|2.5}} &amp;lt;translate&amp;gt;&amp;lt;!--T:181--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/User Group List form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:182--&amp;gt;&lt;br /&gt;
usergrouplist&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:183--&amp;gt;&lt;br /&gt;
Field to load a drop down list of available user groups. Replaces usergroup form field type.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|3.2}} &amp;lt;translate&amp;gt;&amp;lt;!--T:184--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[S:MyLanguage/User State form field type|&amp;lt;translate&amp;gt;&amp;lt;!--T:185--&amp;gt;&lt;br /&gt;
userstate&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|&amp;lt;translate&amp;gt;&amp;lt;!--T:186--&amp;gt;&lt;br /&gt;
Field to load a list of available users statuses.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|{{JVer|3.2}} &amp;lt;translate&amp;gt;&amp;lt;!--T:187--&amp;gt;&lt;br /&gt;
and newer&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:188--&amp;gt;&lt;br /&gt;
[[Category:Form fields]]&lt;br /&gt;
[[Category:Development Reference]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Accessiblemedia_form_field_type&amp;diff=758911</id>
		<title>Accessiblemedia form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Accessiblemedia_form_field_type&amp;diff=758911"/>
		<updated>2020-10-18T13:01:21Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The accessiblemedia form field type provides modal access to the media manager for the choice of an image like the media field. Users with appropriate permissions will be able to upload files.&lt;br /&gt;
&lt;br /&gt;
Like the media field you can use parameters&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
* type (mandatory) must be media.&lt;br /&gt;
* name (mandatory) is the unique name of the field.&lt;br /&gt;
* label (mandatory) (translatable) is the descriptive title of the field.&lt;br /&gt;
* description (optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.&lt;br /&gt;
* directory (optional) is the directory from which the user will be able to choose a file. This attribute should be relative to the top level /images/ folder. The default is that the user will be confined to the top level /images/ folder.&lt;br /&gt;
* preview (optional) shows or hides the preview of the currently chosen image. (&amp;quot;true&amp;quot;: Show always, &amp;quot;tooltip&amp;quot;: Show as tooltip, &amp;quot;false&amp;quot;: Show never). Default is &amp;quot;tooltip&amp;quot;. (since Joomla! 2.5.5)&lt;br /&gt;
* preview_width (optional) sets the max-width of preview image (default: &amp;quot;200&amp;quot;).&lt;br /&gt;
* preview_height (optional) sets the max-height of preview image (default: &amp;quot;200&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example XML field definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field name=&amp;quot;myimage&amp;quot; type=&amp;quot;accessiblemedia&amp;quot; directory=&amp;quot;stories&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Datei.png|200px|thumb|left|The one the right is an Accessible Media Field]]&lt;br /&gt;
This will open the media manager with the directory /images/stories/ already selected an provide an text field like the media field. In addition it offers a text field for add an alternative text.&lt;br /&gt;
&lt;br /&gt;
Note that if you are using this field on the frontend then permissions restrictions are likely to be in force. If the user is not authorized to view or add media they will see an error page in the modal popup (&amp;quot;403 You are not authorized to view this resource.&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
&lt;br /&gt;
PR where the field is addedː [https://github.com/joomla/joomla-cms/pull/27712 PR]&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Accessiblemedia_form_field_type&amp;diff=758909</id>
		<title>Accessiblemedia form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Accessiblemedia_form_field_type&amp;diff=758909"/>
		<updated>2020-10-18T13:00:29Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The accessiblemedia form field type provides modal access to the media manager for the choice of an image like the media field. Users with appropriate permissions will be able to upload files.&lt;br /&gt;
&lt;br /&gt;
Like the media field you can use parameters&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
* type (mandatory) must be media.&lt;br /&gt;
* name (mandatory) is the unique name of the field.&lt;br /&gt;
* label (mandatory) (translatable) is the descriptive title of the field.&lt;br /&gt;
* description (optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.&lt;br /&gt;
* directory (optional) is the directory from which the user will be able to choose a file. This attribute should be relative to the top level /images/ folder. The default is that the user will be confined to the top level /images/ folder.&lt;br /&gt;
* preview (optional) shows or hides the preview of the currently chosen image. (&amp;quot;true&amp;quot;: Show always, &amp;quot;tooltip&amp;quot;: Show as tooltip, &amp;quot;false&amp;quot;: Show never). Default is &amp;quot;tooltip&amp;quot;. (since Joomla! 2.5.5)&lt;br /&gt;
* preview_width (optional) sets the max-width of preview image (default: &amp;quot;200&amp;quot;).&lt;br /&gt;
* preview_height (optional) sets the max-height of preview image (default: &amp;quot;200&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example XML field definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field name=&amp;quot;myimage&amp;quot; type=&amp;quot;accessiblemedia&amp;quot; directory=&amp;quot;stories&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Datei.png|200px|thumb|left|The right one is a Accessible Media Field]]&lt;br /&gt;
This will open the media manager with the directory /images/stories/ already selected an provide an text field like the media field. In addition it offers a text field for add an alternative text.&lt;br /&gt;
&lt;br /&gt;
Note that if you are using this field on the frontend then permissions restrictions are likely to be in force. If the user is not authorized to view or add media they will see an error page in the modal popup (&amp;quot;403 You are not authorized to view this resource.&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
&lt;br /&gt;
PR where the field is addedː [https://github.com/joomla/joomla-cms/pull/27712 PR]&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Accessiblemedia_form_field_type&amp;diff=758905</id>
		<title>Accessiblemedia form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Accessiblemedia_form_field_type&amp;diff=758905"/>
		<updated>2020-10-18T12:37:58Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The accessiblemedia form field type provides modal access to the media manager for the choice of an image like the media field. Users with appropriate permissions will be able to upload files.&lt;br /&gt;
&lt;br /&gt;
Like the media field you can use parameters&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
* type (mandatory) must be media.&lt;br /&gt;
* name (mandatory) is the unique name of the field.&lt;br /&gt;
* label (mandatory) (translatable) is the descriptive title of the field.&lt;br /&gt;
* description (optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.&lt;br /&gt;
* directory (optional) is the directory from which the user will be able to choose a file. This attribute should be relative to the top level /images/ folder. The default is that the user will be confined to the top level /images/ folder.&lt;br /&gt;
* preview (optional) shows or hides the preview of the currently chosen image. (&amp;quot;true&amp;quot;: Show always, &amp;quot;tooltip&amp;quot;: Show as tooltip, &amp;quot;false&amp;quot;: Show never). Default is &amp;quot;tooltip&amp;quot;. (since Joomla! 2.5.5)&lt;br /&gt;
* preview_width (optional) sets the max-width of preview image (default: &amp;quot;200&amp;quot;).&lt;br /&gt;
* preview_height (optional) sets the max-height of preview image (default: &amp;quot;200&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example XML field definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;field name=&amp;quot;myimage&amp;quot; type=&amp;quot;accessiblemedia&amp;quot; directory=&amp;quot;stories&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Datei.png|200px|thumb|left|The right one is a Accessible Media Field]]&lt;br /&gt;
This will open the media manager with the directory /images/stories/ already selected an provide an text field like the media field. In addition it offers a text field for add an alternative text.&lt;br /&gt;
&lt;br /&gt;
Note that if you are using this field on the frontend then permissions restrictions are likely to be in force. If the user is not authorized to view or add media they will see an error page in the modal popup (&amp;quot;403 You are not authorized to view this resource.&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
&lt;br /&gt;
PR where the field is addedː [https://github.com/joomla/joomla-cms/pull/27712 PR]&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Accessiblemedia_form_field_type&amp;diff=758904</id>
		<title>Accessiblemedia form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Accessiblemedia_form_field_type&amp;diff=758904"/>
		<updated>2020-10-18T12:37:06Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The accessiblemedia form field type provides modal access to the media manager for the choice of an image like the media field. Users with appropriate permissions will be able to upload files.&lt;br /&gt;
&lt;br /&gt;
Like the media field you can use parameters&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
* type (mandatory) must be media.&lt;br /&gt;
* name (mandatory) is the unique name of the field.&lt;br /&gt;
* label (mandatory) (translatable) is the descriptive title of the field.&lt;br /&gt;
* description (optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.&lt;br /&gt;
* directory (optional) is the directory from which the user will be able to choose a file. This attribute should be relative to the top level /images/ folder. The default is that the user will be confined to the top level /images/ folder.&lt;br /&gt;
* preview (optional) shows or hides the preview of the currently chosen image. (&amp;quot;true&amp;quot;: Show always, &amp;quot;tooltip&amp;quot;: Show as tooltip, &amp;quot;false&amp;quot;: Show never). Default is &amp;quot;tooltip&amp;quot;. (since Joomla! 2.5.5)&lt;br /&gt;
* preview_width (optional) sets the max-width of preview image (default: &amp;quot;200&amp;quot;).&lt;br /&gt;
* preview_height (optional) sets the max-height of preview image (default: &amp;quot;200&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example XML field definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;field name=&amp;quot;myimage&amp;quot; type=&amp;quot;accessiblemedia&amp;quot; directory=&amp;quot;stories&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Datei.png|200px|thumb|left|The right one is a Accessible Media Field]]&lt;br /&gt;
This will open the media manager with the directory /images/stories/ already selected an provide an text field like the media field. In addition it offers a text field for add an alternative text.&lt;br /&gt;
&lt;br /&gt;
Note that if you are using this field on the frontend then permissions restrictions are likely to be in force. If the user is not authorized to view or add media they will see an error page in the modal popup (&amp;quot;403 You are not authorized to view this resource.&amp;quot;).&lt;br /&gt;
See also&lt;br /&gt;
&lt;br /&gt;
PR where the field is addedː [https://github.com/joomla/joomla-cms/pull/27712 PR]&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Datei.png&amp;diff=758903</id>
		<title>File:Datei.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Datei.png&amp;diff=758903"/>
		<updated>2020-10-18T12:36:21Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Accessiblemedia_form_field_type&amp;diff=758902</id>
		<title>Accessiblemedia form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Accessiblemedia_form_field_type&amp;diff=758902"/>
		<updated>2020-10-18T12:35:57Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The accessiblemedia form field type provides modal access to the media manager for the choice of an image like the media field. Users with appropriate permissions will be able to upload files.&lt;br /&gt;
&lt;br /&gt;
Like the media field you can use parameters&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
* type (mandatory) must be media.&lt;br /&gt;
* name (mandatory) is the unique name of the field.&lt;br /&gt;
* label (mandatory) (translatable) is the descriptive title of the field.&lt;br /&gt;
* description (optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.&lt;br /&gt;
* directory (optional) is the directory from which the user will be able to choose a file. This attribute should be relative to the top level /images/ folder. The default is that the user will be confined to the top level /images/ folder.&lt;br /&gt;
* preview (optional) shows or hides the preview of the currently chosen image. (&amp;quot;true&amp;quot;: Show always, &amp;quot;tooltip&amp;quot;: Show as tooltip, &amp;quot;false&amp;quot;: Show never). Default is &amp;quot;tooltip&amp;quot;. (since Joomla! 2.5.5)&lt;br /&gt;
* preview_width (optional) sets the max-width of preview image (default: &amp;quot;200&amp;quot;).&lt;br /&gt;
* preview_height (optional) sets the max-height of preview image (default: &amp;quot;200&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example XML field definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;field name=&amp;quot;myimage&amp;quot; type=&amp;quot;accessiblemedia&amp;quot; directory=&amp;quot;stories&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Datei.png|200px|thumb|left|The left one is a Accessible Media Field]]&lt;br /&gt;
This will open the media manager with the directory /images/stories/ already selected an provide an text field like the media field. In addition it offers a text field for add an alternative text.&lt;br /&gt;
&lt;br /&gt;
Note that if you are using this field on the frontend then permissions restrictions are likely to be in force. If the user is not authorized to view or add media they will see an error page in the modal popup (&amp;quot;403 You are not authorized to view this resource.&amp;quot;).&lt;br /&gt;
See also&lt;br /&gt;
&lt;br /&gt;
PR where the field is addedː [https://github.com/joomla/joomla-cms/pull/27712 PR]&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Accessiblemedia_form_field_type&amp;diff=758901</id>
		<title>Accessiblemedia form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Accessiblemedia_form_field_type&amp;diff=758901"/>
		<updated>2020-10-18T12:35:08Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The accessiblemedia form field type provides modal access to the media manager for the choice of an image like the media field. Users with appropriate permissions will be able to upload files.&lt;br /&gt;
&lt;br /&gt;
Like the media field you can use parameters&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
* type (mandatory) must be media.&lt;br /&gt;
* name (mandatory) is the unique name of the field.&lt;br /&gt;
* label (mandatory) (translatable) is the descriptive title of the field.&lt;br /&gt;
* description (optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.&lt;br /&gt;
* directory (optional) is the directory from which the user will be able to choose a file. This attribute should be relative to the top level /images/ folder. The default is that the user will be confined to the top level /images/ folder.&lt;br /&gt;
* preview (optional) shows or hides the preview of the currently chosen image. (&amp;quot;true&amp;quot;: Show always, &amp;quot;tooltip&amp;quot;: Show as tooltip, &amp;quot;false&amp;quot;: Show never). Default is &amp;quot;tooltip&amp;quot;. (since Joomla! 2.5.5)&lt;br /&gt;
* preview_width (optional) sets the max-width of preview image (default: &amp;quot;200&amp;quot;).&lt;br /&gt;
* preview_height (optional) sets the max-height of preview image (default: &amp;quot;200&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example XML field definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;field name=&amp;quot;myimage&amp;quot; type=&amp;quot;accessiblemedia&amp;quot; directory=&amp;quot;stories&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Datei.png|200px|thumb|left|Alternativer Text]]&lt;br /&gt;
This will open the media manager with the directory /images/stories/ already selected an provide an text field like the media field. In addition it offers a text field for add an alternative text.&lt;br /&gt;
&lt;br /&gt;
Note that if you are using this field on the frontend then permissions restrictions are likely to be in force. If the user is not authorized to view or add media they will see an error page in the modal popup (&amp;quot;403 You are not authorized to view this resource.&amp;quot;).&lt;br /&gt;
See also&lt;br /&gt;
&lt;br /&gt;
PR where the field is addedː [https://github.com/joomla/joomla-cms/pull/27712 PR]&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Accessiblemedia_form_field_type&amp;diff=758900</id>
		<title>Accessiblemedia form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Accessiblemedia_form_field_type&amp;diff=758900"/>
		<updated>2020-10-18T12:34:30Z</updated>

		<summary type="html">&lt;p&gt;Astridx: Created page with &amp;quot;The accessiblemedia form field type provides modal access to the media manager for the choice of an image like the media field. Users with appropriate permissions will be able...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The accessiblemedia form field type provides modal access to the media manager for the choice of an image like the media field. Users with appropriate permissions will be able to upload files.&lt;br /&gt;
&lt;br /&gt;
Like the media field you can use parameters&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
* type (mandatory) must be media.&lt;br /&gt;
* name (mandatory) is the unique name of the field.&lt;br /&gt;
* label (mandatory) (translatable) is the descriptive title of the field.&lt;br /&gt;
* description (optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.&lt;br /&gt;
* directory (optional) is the directory from which the user will be able to choose a file. This attribute should be relative to the top level /images/ folder. The default is that the user will be confined to the top level /images/ folder.&lt;br /&gt;
* preview (optional) shows or hides the preview of the currently chosen image. (&amp;quot;true&amp;quot;: Show always, &amp;quot;tooltip&amp;quot;: Show as tooltip, &amp;quot;false&amp;quot;: Show never). Default is &amp;quot;tooltip&amp;quot;. (since Joomla! 2.5.5)&lt;br /&gt;
* preview_width (optional) sets the max-width of preview image (default: &amp;quot;200&amp;quot;).&lt;br /&gt;
* preview_height (optional) sets the max-height of preview image (default: &amp;quot;200&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example XML field definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;field name=&amp;quot;myimage&amp;quot; type=&amp;quot;accessiblemedia&amp;quot; directory=&amp;quot;stories&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will open the media manager with the directory /images/stories/ already selected an provide an text field like the media field. In addition it offers a text field for add an alternative text.&lt;br /&gt;
&lt;br /&gt;
[[File:Datei.png|200px|thumb|left|Alternativer Text]]&lt;br /&gt;
&lt;br /&gt;
Note that if you are using this field on the frontend then permissions restrictions are likely to be in force. If the user is not authorized to view or add media they will see an error page in the modal popup (&amp;quot;403 You are not authorized to view this resource.&amp;quot;).&lt;br /&gt;
See also&lt;br /&gt;
&lt;br /&gt;
PR where the field is addedː [https://github.com/joomla/joomla-cms/pull/27712 PR]&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=659584</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=659584"/>
		<updated>2020-04-08T07:07:04Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description of how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:116--&amp;gt;&lt;br /&gt;
[[File:Joomla4 patch tester.png|800px]]&lt;br /&gt;
The page you are presented with has the Patch Tester 3.0.0 Release Candidate for use on Joomla3 Sites and the Patch Tester 4.0.0 Release Candidate for use on Joomla 4 sites.&lt;br /&gt;
Note that the files to download are hidden in the Assets drop-down which when clicked will review the download file formats and the source code.&lt;br /&gt;
Once downloaded it can be installed via the Extension Manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:84--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:87--&amp;gt; &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this: &amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
Now all should be clean&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:95--&amp;gt; &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: At the bottom of each new PR&#039;s is now a link to download an update packages containing the changes from this specific PR.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
Maybe you have to expand the details for the tests first. For this click on &amp;lt;tt&amp;gt;Show all checks&amp;lt;/tt&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages1-&amp;lt;translate&amp;gt;&amp;lt;!--T:98--&amp;gt; en&amp;lt;/translate&amp;gt;.png||&amp;lt;translate&amp;gt;&amp;lt;!--T:99--&amp;gt; Maybe you have to expand the details for the tests first.&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
Then you see the link to the download. Click on &amp;lt;tt&amp;gt;Details&amp;lt;/tt&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages2-&amp;lt;translate&amp;gt;&amp;lt;!--T:101--&amp;gt; en&amp;lt;/translate&amp;gt;.png||&amp;lt;translate&amp;gt;&amp;lt;!--T:102--&amp;gt; Then you see the link to download.&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
The link leads to a download page for that PR where you can download full install packages and update packages.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages3-&amp;lt;translate&amp;gt;&amp;lt;!--T:104--&amp;gt; en&amp;lt;/translate&amp;gt;.png||&amp;lt;translate&amp;gt;&amp;lt;!--T:105--&amp;gt; Then you see the link to download.&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla 4.-dev code inclusive the patch in a ZIP file. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
Unzip the file in a temporary location, a folder named &amp;lt;tt&amp;gt;Joomla_[Version]+[Number of Path]-Development-Full_Package&amp;lt;/tt&amp;gt; will appear.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
For Version &amp;lt;tt&amp;gt;4.0.0-beta1-dev&amp;lt;/tt&amp;gt; and PR-number &amp;lt;tt&amp;gt;28462&amp;lt;/tt&amp;gt; this will be for example &amp;lt;tt&amp;gt;Joomla_4.0.0-beta1-dev+pr.28462-Development-Full_Package&amp;lt;/tt&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
Now we need to create a folder on either the local web server or the hosting account that can be accessed via the browser. Create the folder &amp;lt;tt&amp;gt;bugtesting&amp;lt;/tt&amp;gt; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
Go into the &amp;lt;tt&amp;gt;Joomla_[Version]+[Number of Path]-Development-Full_Package&amp;lt;/tt&amp;gt; folder and copy the complete contents to the folder &amp;lt;tt&amp;gt;bugtesting&amp;lt;/tt&amp;gt; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;tt&amp;gt;http://localhost/bugtesting&amp;lt;/tt&amp;gt; if you are using a local web server, if you use one on a hosting account, navigate to the appropriate URL for the hosting account.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages4-&amp;lt;translate&amp;gt;&amp;lt;!--T:112--&amp;gt; en&amp;lt;/translate&amp;gt;.png||&amp;lt;translate&amp;gt;&amp;lt;!--T:113--&amp;gt; Set up your sytem.&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
For testing a PR, people who don&#039;t have a git clone and do not have Composer or Node.js can download and install the full install package. If a PR modifies update SQL scripts or other things related to updating, testers can install a 3.10-dev nightly or 3.10 beta and use the update package of that J4 PR to test updating to J4.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===How to test patch for Joomla 4 === &amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=22RXppJjXf8}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===How to test patch for Joomla 3 === &amp;lt;!--T:58--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
===How to test Prebuild packages for Joomla === &lt;br /&gt;
&lt;br /&gt;
Joomla has instigated a new method of testing pr&#039;s that will greatly benefit those on shared hosting.  Or those who simply want a simple pr testing method.&lt;br /&gt;
{{#widget:YouTube|id=22RXppJjXf8}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=653742</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=653742"/>
		<updated>2020-03-31T20:43:45Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Testing the diff ===  &amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:84--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:87--&amp;gt; &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this: &amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
Now all should be clean&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:95--&amp;gt; &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: At the bottom of each new PR&#039;s is now a link to download an update packages containing the changes from this specific PR.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
Maybe you have to expand the details for the tests first. For this click on &amp;lt;tt&amp;gt;Show all checks&amp;lt;/tt&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages1-&amp;lt;translate&amp;gt;&amp;lt;!--T:98--&amp;gt; en&amp;lt;/translate&amp;gt;.png||&amp;lt;translate&amp;gt;&amp;lt;!--T:99--&amp;gt; Maybe you have to expand the details for the tests first.&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
Then you see the link to the download. Click on &amp;lt;tt&amp;gt;Details&amp;lt;/tt&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages2-&amp;lt;translate&amp;gt;&amp;lt;!--T:101--&amp;gt; en&amp;lt;/translate&amp;gt;.png||&amp;lt;translate&amp;gt;&amp;lt;!--T:102--&amp;gt; Then you see the link to download.&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
The link leads to a download page for that PR where you can download full install packages and update packages.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages3-&amp;lt;translate&amp;gt;&amp;lt;!--T:104--&amp;gt; en&amp;lt;/translate&amp;gt;.png||&amp;lt;translate&amp;gt;&amp;lt;!--T:105--&amp;gt; Then you see the link to download.&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla 4.-dev code inclusive the patch in a ZIP file. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
Unzip the file in a temporary location, a folder named &amp;lt;tt&amp;gt;Joomla_[Version]+[Number of Path]-Development-Full_Package&amp;lt;/tt&amp;gt; will appear.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
For Version &amp;lt;tt&amp;gt;4.0.0-beta1-dev&amp;lt;/tt&amp;gt; and PR-number &amp;lt;tt&amp;gt;28462&amp;lt;/tt&amp;gt; this will be for example &amp;lt;tt&amp;gt;Joomla_4.0.0-beta1-dev+pr.28462-Development-Full_Package&amp;lt;/tt&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
Now we need to create a folder on either the local web server or the hosting account that can be accessed via the browser. Create the folder &amp;lt;tt&amp;gt;bugtesting&amp;lt;/tt&amp;gt; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
Go into the &amp;lt;tt&amp;gt;Joomla_[Version]+[Number of Path]-Development-Full_Package&amp;lt;/tt&amp;gt; folder and copy the complete contents to the folder &amp;lt;tt&amp;gt;bugtesting&amp;lt;/tt&amp;gt; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;tt&amp;gt;http://localhost/bugtesting&amp;lt;/tt&amp;gt; if you are using a local web server, if you use one on a hosting account, navigate to the appropriate URL for the hosting account.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages4-&amp;lt;translate&amp;gt;&amp;lt;!--T:112--&amp;gt; en&amp;lt;/translate&amp;gt;.png||&amp;lt;translate&amp;gt;&amp;lt;!--T:113--&amp;gt; Set up your sytem.&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
For testing a PR, people who don&#039;t have a git clone and do not have Composer or Node.js can download and install the full install package. If a PR modifies update SQL scripts or other things related to updating, testers can install a 3.10-dev nightly or 3.10 beta and use the update package of that J4 PR to test updating to J4.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:115--&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651679</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651679"/>
		<updated>2020-03-29T23:37:57Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&lt;br /&gt;
&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&lt;br /&gt;
&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&lt;br /&gt;
&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Now all should be clean&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: There is a new feature for every J4 pull request which has been received any commit since that [https://github.com/joomla/joomla-cms/pull/28409 new Feature] was merged into J4, i.e. for all new PR&#039;s, too: You can find in the test details. At the bottom of such PR&#039;s is a link to Downloads. &lt;br /&gt;
&lt;br /&gt;
Maybe you have to expand the details for the tests first. For this click on &amp;lt;tt&amp;gt;Show all checks&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages1.png||Maybe you have to expand the details for the tests first.]]&lt;br /&gt;
&lt;br /&gt;
Then you see the link to the download. Click on &amp;lt;tt&amp;gt;Details&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages2.png||Then you see the link to download.]]&lt;br /&gt;
&lt;br /&gt;
The link leads to a download page for that PR where you can download full install packages and update packages.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages3.png||Then you see the link to download.]]&lt;br /&gt;
&lt;br /&gt;
This will get you a copy of the Joomla 4.-dev code inclusive the patch in a ZIP file. &lt;br /&gt;
&lt;br /&gt;
Unzip the file in a temporary location, a folder named &amp;lt;tt&amp;gt;Joomla_[Version]+[Number of Path]-Development-Full_Package&amp;lt;/tt&amp;gt; will appear. &lt;br /&gt;
&lt;br /&gt;
For Version &amp;lt;tt&amp;gt;4.0.0-beta1-dev&amp;lt;/tt&amp;gt; and PR-number &amp;lt;tt&amp;gt;28462&amp;lt;/tt&amp;gt; this will be for example &amp;lt;tt&amp;gt;Joomla_4.0.0-beta1-dev+pr.28462-Development-Full_Package&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Now we need to create a folder on either the local web server or the hosting account that can be accessed via the browser. Create the folder &amp;lt;tt&amp;gt;bugtesting&amp;lt;/tt&amp;gt; and go to this folder via Explorer or Finder.&lt;br /&gt;
&lt;br /&gt;
Go into the &amp;lt;tt&amp;gt;Joomla_[Version]+[Number of Path]-Development-Full_Package&amp;lt;/tt&amp;gt; folder and copy the complete contents to the folder &amp;lt;tt&amp;gt;bugtesting&amp;lt;/tt&amp;gt; that you created in the previous step.&lt;br /&gt;
&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;tt&amp;gt;http://localhost/bugtesting&amp;lt;/tt&amp;gt; if you are using a local web server, if you use one on a hosting account, navigate to the appropriate URL for the hosting account.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages4.png||Set up your sytem.]]&lt;br /&gt;
&lt;br /&gt;
For testing a PR, people who don&#039;t have a git clone and do not have Composer or Node.js can download and install the full install package. If a PR modifies update SQL scripts or other things related to updating, testers can install a 3.10-dev nightly or 3.10 beta and use the update package of that J4 PR to test updating to J4.&lt;br /&gt;
&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651678</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651678"/>
		<updated>2020-03-29T23:32:47Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&lt;br /&gt;
&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&lt;br /&gt;
&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&lt;br /&gt;
&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Now all should be clean&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: There is a new feature for every J4 pull request which has been received any commit since that [https://github.com/joomla/joomla-cms/pull/28409 new Feature] was merged into J4, i.e. for all new PR&#039;s, too: You can find in the test details. At the bottom of such PR&#039;s is a link to Downloads. &lt;br /&gt;
&lt;br /&gt;
Maybe you have to expand the details for the tests first. For this click on &amp;quot;Show all checks&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages1.png||Maybe you have to expand the details for the tests first.]]&lt;br /&gt;
&lt;br /&gt;
Then you see the link to the download. Click on &amp;quot;Details&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages2.png||Then you see the link to download.]]&lt;br /&gt;
&lt;br /&gt;
The link leads to a download page for that PR where you can download full install packages and update packages.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages3.png||Then you see the link to download.]]&lt;br /&gt;
&lt;br /&gt;
This will get you a copy of the Joomla 4.-dev code inclusive the patch in a ZIP file. &lt;br /&gt;
&lt;br /&gt;
Unzip the file in a temporary location, a folder named Joomla_[Version]+[Number of Path]-Development-Full_Package will appear. &lt;br /&gt;
&lt;br /&gt;
For Version 4.0.0-beta1-dev and PR-number 28462 this will be for example Joomla_4.0.0-beta1-dev+pr.28462-Development-Full_Package.&lt;br /&gt;
&lt;br /&gt;
Now we need to create a folder on either the local web server or the hosting account that can be accessed via the browser. Create the folder bugtesting and go to this folder via Explorer or Finder.&lt;br /&gt;
&lt;br /&gt;
Go into the Joomla_[Version]+[Number of Path]-Development-Full_Package folder and copy the complete contents to the folder bugtesting that you created in the previous step.&lt;br /&gt;
&lt;br /&gt;
Now you can install Joomla by navigating to http://localhost/bugtesting if you are using a local web server, if you use one on a hosting account, navigate to the appropriate URL for the hosting account.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages4.png||Set up your sytem.]]&lt;br /&gt;
&lt;br /&gt;
For testing a PR, people who don&#039;t have a git clone and do not have Composer or Node.js can download and install the full install package. If a PR modifies update SQL scripts or other things related to updating, testers can install a 3.10-dev nightly or 3.10 beta and use the update package of that J4 PR to test updating to J4.&lt;br /&gt;
&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651677</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651677"/>
		<updated>2020-03-29T23:31:36Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&lt;br /&gt;
&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&lt;br /&gt;
&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&lt;br /&gt;
&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Now all should be clean&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: There is a new feature for every J4 pull request which has been received any commit since that [https://github.com/joomla/joomla-cms/pull/28409 new Feature] was merged into J4, i.e. for all new PR&#039;s, too: You can find in the test details. At the bottom of such PR&#039;s is a link to Downloads. &lt;br /&gt;
&lt;br /&gt;
Maybe you have to expand the details for the tests first. For this click on &amp;quot;Show all checks&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages1.png||Maybe you have to expand the details for the tests first.]]&lt;br /&gt;
&lt;br /&gt;
Then you see the link to the download. Click on &amp;quot;Details&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages2.png||Then you see the link to download.]]&lt;br /&gt;
&lt;br /&gt;
The link leads to a download page for that PR where you can download full install packages and upload packages.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages3.png||Then you see the link to download.]]&lt;br /&gt;
&lt;br /&gt;
This will get you a copy of the Joomla 4.-dev code inclusive the patch in a ZIP file. &lt;br /&gt;
&lt;br /&gt;
Unzip the file in a temporary location, a folder named Joomla_[Version]+[Number of Path]-Development-Full_Package will appear. &lt;br /&gt;
&lt;br /&gt;
For Version 4.0.0-beta1-dev and PR-number 28462 this will be for example Joomla_4.0.0-beta1-dev+pr.28462-Development-Full_Package.&lt;br /&gt;
&lt;br /&gt;
Now we need to create a folder on either the local web server or the hosting account that can be accessed via the browser. Create the folder bugtesting and go to this folder via Explorer or Finder.&lt;br /&gt;
&lt;br /&gt;
Go into the Joomla_[Version]+[Number of Path]-Development-Full_Package folder and copy the complete contents to the folder bugtesting that you created in the previous step.&lt;br /&gt;
&lt;br /&gt;
Now you can install Joomla by navigating to http://localhost/bugtesting if you are using a local web server, if you use one on a hosting account, navigate to the appropriate URL for the hosting account.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages4.png||Set up your sytem.]]&lt;br /&gt;
&lt;br /&gt;
For testing a PR, people who don&#039;t have a git clone and do not have Composer or Node.js can download and install the full install package. If a PR modifies update SQL scripts or other things related to updating, testers can install a 3.10-dev nightly or 3.10 beta and use the update package of that J4 PR to test updating to J4.&lt;br /&gt;
&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651676</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651676"/>
		<updated>2020-03-29T23:29:06Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&lt;br /&gt;
&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&lt;br /&gt;
&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&lt;br /&gt;
&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Now all should be clean&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: There is a new feature for every J4 pull request which has been received any commit since that [https://github.com/joomla/joomla-cms/pull/28409 new Feature] was merged into J4, i.e. for all new PR&#039;s, too: You can find in the test details. At the bottom of such PR&#039;s is a link to Downloads. &lt;br /&gt;
&lt;br /&gt;
Maybe you have to expand the details for the tests first. For this click on &amp;quot;Show all checks&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages1.png||Maybe you have to expand the details for the tests first.]]&lt;br /&gt;
&lt;br /&gt;
Then you see the link to download.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages2.png||Then you see the link to download.]]&lt;br /&gt;
&lt;br /&gt;
The link leads to a download page for that PR where you can download full install packages and upload packages.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages3.png||Then you see the link to download.]]&lt;br /&gt;
&lt;br /&gt;
This will get you a copy of the Joomla 4.-dev code inclusive the patch in a ZIP file. &lt;br /&gt;
&lt;br /&gt;
Unzip the file in a temporary location, a folder named Joomla_[Version]+[Number of Path]-Development-Full_Package will appear. &lt;br /&gt;
&lt;br /&gt;
For Version 4.0.0-beta1-dev and PR-number 28462 this will be for example Joomla_4.0.0-beta1-dev+pr.28462-Development-Full_Package.&lt;br /&gt;
&lt;br /&gt;
Now we need to create a folder on either the local web server or the hosting account that can be accessed via the browser. Create the folder bugtesting and go to this folder via Explorer or Finder.&lt;br /&gt;
&lt;br /&gt;
Go into the Joomla_[Version]+[Number of Path]-Development-Full_Package folder and copy the complete contents to the folder bugtesting that you created in the previous step.&lt;br /&gt;
&lt;br /&gt;
Now you can install Joomla by navigating to http://localhost/bugtesting if you are using a local web server, if you use one on a hosting account, navigate to the appropriate URL for the hosting account.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages4.png||Set up your sytem.]]&lt;br /&gt;
&lt;br /&gt;
For testing a PR, people who don&#039;t have a git clone and do not have Composer or Node.js can download and install the full install package. If a PR modifies update SQL scripts or other things related to updating, testers can install a 3.10-dev nightly or 3.10 beta and use the update package of that J4 PR to test updating to J4.&lt;br /&gt;
&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:PrebuildPackages4-en.png&amp;diff=651675</id>
		<title>File:PrebuildPackages4-en.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:PrebuildPackages4-en.png&amp;diff=651675"/>
		<updated>2020-03-29T23:26:57Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651674</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651674"/>
		<updated>2020-03-29T23:26:25Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&lt;br /&gt;
&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&lt;br /&gt;
&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&lt;br /&gt;
&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Now all should be clean&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: There is a new feature for every J4 pull request which has been received any commit since that [https://github.com/joomla/joomla-cms/pull/28409 new Feature] was merged into J4, i.e. for all new PR&#039;s, too: You can find in the test details. At the bottom of such PR&#039;s is a link to Downloads. &lt;br /&gt;
&lt;br /&gt;
Maybe you have to expand the details for the tests first.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages1.png||Maybe you have to expand the details for the tests first.]]&lt;br /&gt;
&lt;br /&gt;
Then you see the link to download.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages2.png||Then you see the link to download.]]&lt;br /&gt;
&lt;br /&gt;
The link leads to a download page for that PR where you can download full install packages and upload packages.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages3.png||Then you see the link to download.]]&lt;br /&gt;
&lt;br /&gt;
This will get you a copy of the Joomla 4.-dev code inclusive the patch in a ZIP file. &lt;br /&gt;
&lt;br /&gt;
Unzip the file in a temporary location, a folder named Joomla_[Version]+[Number of Path]-Development-Full_Package will appear. &lt;br /&gt;
&lt;br /&gt;
For Version 4.0.0-beta1-dev and PR-number 28462 this will be for example Joomla_4.0.0-beta1-dev+pr.28462-Development-Full_Package.&lt;br /&gt;
&lt;br /&gt;
Now we need to create a folder on either the local web server or the hosting account that can be accessed via the browser. Create the folder bugtesting and go to this folder via Explorer or Finder.&lt;br /&gt;
&lt;br /&gt;
Go into the Joomla_[Version]+[Number of Path]-Development-Full_Package folder and copy the complete contents to the folder bugtesting that you created in the previous step.&lt;br /&gt;
&lt;br /&gt;
Now you can install Joomla by navigating to http://localhost/bugtesting if you are using a local web server, if you use one on a hosting account, navigate to the appropriate URL for the hosting account.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages4.png||Set up your sytem.]]&lt;br /&gt;
&lt;br /&gt;
For testing a PR, people who don&#039;t have a git clone and do not have Composer or Node.js can download and install the full install package. If a PR modifies update SQL scripts or other things related to updating, testers can install a 3.10-dev nightly or 3.10 beta and use the update package of that J4 PR to test updating to J4.&lt;br /&gt;
&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:PrebuildPackages3-en.png&amp;diff=651666</id>
		<title>File:PrebuildPackages3-en.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:PrebuildPackages3-en.png&amp;diff=651666"/>
		<updated>2020-03-29T23:11:20Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:PrebuildPackages2-en.png&amp;diff=651665</id>
		<title>File:PrebuildPackages2-en.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:PrebuildPackages2-en.png&amp;diff=651665"/>
		<updated>2020-03-29T23:10:44Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651662</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651662"/>
		<updated>2020-03-29T23:09:13Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&lt;br /&gt;
&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&lt;br /&gt;
&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&lt;br /&gt;
&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Now all should be clean&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: There is a new feature for every J4 pull request which has been received any commit since that [https://github.com/joomla/joomla-cms/pull/28409 new Feature] was merged into J4, i.e. for all new PR&#039;s, too: You can find in the test details. At the bottom of such PR&#039;s is a link to Downloads. &lt;br /&gt;
&lt;br /&gt;
Maybe you have to expand the details for the tests first.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages1.png||Maybe you have to expand the details for the tests first.]]&lt;br /&gt;
&lt;br /&gt;
Then you see the link to download.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages2.png||Then you see the link to download.]]&lt;br /&gt;
&lt;br /&gt;
The link leads to a download page for that PR where you can download full install packages and upload packages.&lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages3.png||Then you see the link to download.]]&lt;br /&gt;
&lt;br /&gt;
For testing a PR, people who don&#039;t have a git clone and do not have Composer or Node.js can download and install the full install package. If a PR modifies update SQL scripts or other things related to updating, testers can install a 3.10-dev nightly or 3.10 beta and use the update package of that J4 PR to test updating to J4.&lt;br /&gt;
&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:PrebuildPackages1-en.png&amp;diff=651660</id>
		<title>File:PrebuildPackages1-en.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:PrebuildPackages1-en.png&amp;diff=651660"/>
		<updated>2020-03-29T22:57:39Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651659</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651659"/>
		<updated>2020-03-29T22:57:12Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&lt;br /&gt;
&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&lt;br /&gt;
&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&lt;br /&gt;
&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Now all should be clean&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: There is a new feature for every J4 pull request which has been received any commit since that [https://github.com/joomla/joomla-cms/pull/28409 new Feature] was merged into J4, i.e. for all new PR&#039;s, too: You can find in the test details. At the bottom of such PR&#039;s is a link to Downloads. &lt;br /&gt;
&lt;br /&gt;
[[File:PrebuildPackages1.png||Maybe you have to expand the details for the tests first.]]&lt;br /&gt;
&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651657</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651657"/>
		<updated>2020-03-29T22:55:39Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&lt;br /&gt;
&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&lt;br /&gt;
&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&lt;br /&gt;
&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Now all should be clean&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: There is a new feature for every J4 pull request which has been received any commit since that [https://github.com/joomla/joomla-cms/pull/28409 new Feature] was merged into J4, i.e. for all new PR&#039;s, too: You can find in the test details. At the bottom of such PR&#039;s is a link to Downloads. Maybe you have to expand the details for the tests first.&lt;br /&gt;
&lt;br /&gt;
[PrebuildPackages1.png]&lt;br /&gt;
&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651655</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651655"/>
		<updated>2020-03-29T22:54:32Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&lt;br /&gt;
&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&lt;br /&gt;
&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&lt;br /&gt;
&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Now all should be clean&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: There is a new feature for every J4 pull request which has been received any commit since that [https://github.com/joomla/joomla-cms/pull/28409 new Feature] was merged into J4, i.e. for all new PR&#039;s, too: You can find in the test details. At the bottom of such PR&#039;s is a link to Downloads. &lt;br /&gt;
&lt;br /&gt;
[[PrebuildPackages1.png|thumb|Maybe you have to expand the details for the tests first.]]&lt;br /&gt;
&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651652</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651652"/>
		<updated>2020-03-29T22:53:55Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&lt;br /&gt;
&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&lt;br /&gt;
&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&lt;br /&gt;
&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Now all should be clean&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: There is a new feature for every J4 pull request which has been received any commit since that [https://github.com/joomla/joomla-cms/pull/28409 new Feature] was merged into J4, i.e. for all new PR&#039;s, too: You can find in the test details. At the bottom of such PR&#039;s is a link to Downloads. &lt;br /&gt;
&lt;br /&gt;
[[|thumb|Maybe you have to expand the details for the tests first.]]&lt;br /&gt;
&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651650</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651650"/>
		<updated>2020-03-29T22:53:07Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&lt;br /&gt;
&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&lt;br /&gt;
&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&lt;br /&gt;
&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Now all should be clean&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: There is a new feature for every J4 pull request which has been received any commit since that [https://github.com/joomla/joomla-cms/pull/28409 new Feature] was merged into J4, i.e. for all new PR&#039;s, too: You can find in the test details. At the bottom of such PR&#039;s is a link to Downloads. &lt;br /&gt;
&lt;br /&gt;
[[File:Documentation_all_together_transparent.png||Maybe you have to expand the details for the tests first.]]&lt;br /&gt;
&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651649</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651649"/>
		<updated>2020-03-29T22:50:27Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&lt;br /&gt;
&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&lt;br /&gt;
&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&lt;br /&gt;
&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Now all should be clean&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: There is a new feature for every J4 pull request which has been received any commit since that [https://github.com/joomla/joomla-cms/pull/28409 new Feature] was merged into J4, i.e. for all new PR&#039;s, too: You can find in the test details. At the bottom of such PR&#039;s is a link to Downloads. Maybe you have to expand the details for the tests first.&lt;br /&gt;
&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651648</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651648"/>
		<updated>2020-03-29T22:49:17Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&lt;br /&gt;
&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&lt;br /&gt;
&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&lt;br /&gt;
&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Now all should be clean&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prebuild packages == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
For all people who test Pull Requests for J4: There is a new feature for every J4 pull request which has been received any commit since that [https://github.com/joomla/joomla-cms/pull/28409] was merged into J4, i.e. for all new PR&#039;s, too: You can find in the test details. At the bottom of such PR&#039;s is a link to Downloads. Maybe you have to expand the details for the tests first.&lt;br /&gt;
&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651635</id>
		<title>Testing Joomla! patches</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Testing_Joomla!_patches&amp;diff=651635"/>
		<updated>2020-03-29T22:33:55Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In all software there are mistakes that need to be fixed, this is also the case in Open Source software like Joomla!. The source code of Joomla! is centrally located on the internet, making it accessible to everyone. Anyone who spots a bug or issue with Joomla! can report it. A guide to Filing bugs and issues can be found here: [[S:MyLanguage/Filing_bugs_and_issues|Filing bugs and issues]]&lt;br /&gt;
 Reported bugs will be solved and eventually need testing. This page explains how you can contribute to the Joomla project by testing proposed solutions. You do not need to have any coding knowledge, you do need a Joomla installation to test on. &lt;br /&gt;
A Quick Reference Guide for testing is available at: [[S:MyLanguage/Testing Joomla! patches QuickReferenceGuide|Testing Joomla! patches QuickReferenceGuide]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The Joomla staging code === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Joomla staging code is the most recent code that is being worked on. All bugfixes and new features are applied to this code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Joomla staging code is located at https://github.com/joomla/joomla-cms, this is the code that needs to be installed. How that is done is explained a little further under [[#Preparing to test|Preparing to test]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== The issue-tracker === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The issue-tracker for Joomla is located here: https://issues.joomla.org&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_issue_tracker-&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The list shows the tracker items from new to old but the order can be changed by using the filters under Search tools. All items in the tracker, that have a patch, have a version number beside the title.&lt;br /&gt;
* PR-staging: This is Joomla 3.9.x&lt;br /&gt;
* PR-4.0-dev: This is Joomla 4.0&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
These labels will change in the future as new versions come and old versions go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The status is important and this is an explanation:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039; - Immediately after an issue is reported it receives this status. When you find a bug, create a description how to reproduce the bug. People who are testing the issue then know how to test the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Confirmed&#039;&#039;&#039; - The tracker team has been able to reproduce the issue. The coding team is going to look for a solution.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Pending&#039;&#039;&#039; - A solution has been found for the issue. A patch has been attached that can be tested. The issue needs to be tested. Pay attention to the label beside the title, this indicates for which Joomla version the patch is applicable.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ready to commit&#039;&#039;&#039; - The patch has been successfully tested and the code can be committed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Closed&#039;&#039;&#039; - This status is for all issues that need no further action.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Filtering is useful in the issue tracker. Monitoring can be useful to receive notifications of an issue that has been updated.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Basically you start testing issues that have the status &amp;quot;Pending&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing to test === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
First the master code has to be retrieved from the Joomla GitHub repository.&lt;br /&gt;
There are several different ways to download the Joomla master code but here we only discuss the download option.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create folder ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
First we need to create a folder on either the local webserver or the hosting account that can be accessed via the browser. Create the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; and go to this folder via Explorer or Finder.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Download Joomla! ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Go to the [https://github.com/joomla/joomla-cms Joomla GitHub location] and click on &#039;&#039;&#039;Download ZIP&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:joomla_github-&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
This will get you a copy of the Joomla master code in a ZIP file. Unzip the file in a temporary location, a folder named joomla-cms-staging will appear. Inside this folder is the Joomla master code. Go into the joomla-cms-staging folder and copy the complete contents to the folder &#039;&#039;&#039;bugtesting&#039;&#039;&#039; that you created in the previous step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you have to set up your system. For more information see https://docs.joomla.org/J4.x:Setting_Up_Your_Local_Environment/en.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Now you can install Joomla by navigating to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost/bugtesting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; if you are using a local webserver, if you use one on a hosting account, navigate to the appropriate URL for the hosting account. You will see the regular installation process of Joomla.&lt;br /&gt;
For sample data choose: Test English (GB) sample data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This is important so everybody uses the same data to test!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The installation folder does not have to be removed, this way you can easily reinstall everything if needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download Patch Tester === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
To help you with the process of testing patches, a Joomla extension called Patch Tester has been developed. The Patch Tester can be downloaded from the [https://github.com/joomla-extensions/patchtester/releases Patch Tester page] and after that can be installed via the Extension manager in Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
To use the Patch Tester a GitHub account is required, the reason for this that there is a strict limit on the number of anonymous requests that can be made via the Patch Tester. You can sign up for a GitHub account on [https://github.com/join this page].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Setup Patch Tester === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The GitHub account details can be entered into the settings of the Patch Tester. After the Patch Tester has been installed go to Components -&amp;gt; Joomla! Patch Tester and click on Options in the top right corner. The Options page shows up and there are three tabs. On the first tab called GitHub Repository you can choose which repository you want to use. By default this is Joomla! CMS.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_repo-&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
On the second tab called GitHub Authentication you can enter your GitHub username and password or token if you use a token.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:patchtester_details-&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: If you have enabled Two-Factor Authentication for your GitHub account, you will need to create a personal access token at https://github.com/settings/applications and enter that in the GitHub token field.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
After entering your account details click on Save &amp;amp; Close. Once back in the Patch Tester click on Fetch Data in the top left corner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
You are now ready to start testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Find an issue in the issue tracker you want to test or use the &amp;quot;Feeling lucky&amp;quot; button. First check if you can reproduce the issue. If you can reproduce the issue, then you can install the patch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing Patch === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In the Patch Tester find the issue you are working on by (partial) title or ID. The title of a tracker always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
[#4308] - Fixed event dispatching inconsistencies leading to incomplete API&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Beside the # is the ID and behind the - sign comes the title.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
After the patch has been found click on the blue button Apply Patch. Check if the bug has been fixed and also check if no new bugs have been introduced&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Recording test results === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
After testing, please add your test result in the test overview (&#039;&#039;use the button &amp;quot;Test this&amp;quot;&#039;&#039;). Now you only need to add a comment if you have extra information or if you test unsuccessful. As the Tracker now automatically add a comment that you test it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
It must also be noted that it is much better if you can test patches in a multilingual environment (&#039;&#039;with at least 3 content languages published&#039;&#039;) as there can be issues triggered only in such environment.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:New_testthis_button-&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|The new Test This button and how to use it]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Revert patch === &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
After a patch has been tested it is no longer needed and can be removed from your test installation, this way you are always testing with a clean system (You can test patches in conjunction to each other to make sure they don&#039;t conflict).  Go back to the Patch Tester and click on the green button Revert Patch. This will remove the patch and you can start testing the next issue.&lt;br /&gt;
&lt;br /&gt;
== Testing patches using Git == &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Since the Patch Tester cannot be used for all patches to test, sometimes we must use another way. The Patch Tester replaces the complete file and does not only apply the changes of the pull request, so you may not be testing an issue in an isolated state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
To truly test a patch with only the changes made in the patch, we must use Git. The reason is that Git can apply a patch with only the changes in that patch. Git does this using a diff file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The prerequisites to be able to use the below method are:&lt;br /&gt;
* Joomla is installed using Git&lt;br /&gt;
* cURL is installed&lt;br /&gt;
&lt;br /&gt;
=== Getting the diff === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
To get a diff from a pull request is rather easy. Let&#039;s say the URL to the pull request is &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
To get the diff, all you need to do is add &#039;&#039;.diff&#039;&#039; after the URL, so it becomes &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/joomla/joomla-cms/pull/1452.diff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the diff === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Before you apply the diff, you can first check if the diff can be applied, a sanity check. Go to the root of your Joomla installation and run the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply --check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Applying the diff === &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
After the diff has been tested and there are no errors, the diff can be applied by running the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
With the diff applied you can run your tests and record your test results as explained above. If needed, you can apply multiple diffs at once as long as they do not overlap each other. In some cases this is needed when there are multiple pull requests that need to be combined to be tested.&lt;br /&gt;
&lt;br /&gt;
=== Reverting the diff === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Once you are done with testing you can cleanup the system by revering the diff with the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -L https://github.com/joomla/joomla-cms/pull/1452.diff | git apply -R&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To verify that everything is clean you can run&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
You should get the notice:&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;nothing to commit, working directory clean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
In case the system is not clean you can get a notice like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Gitwithchanges.png|center|thumb|There are changed files in the working directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
In case you see changed files but you have not made any changes you can cleanup the system with &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Now all should be clean&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
If you have become enthusiastic to test, give it a try. It takes a bit of effort to set everything up but once that is done, it is fun and easy! In addition you are also contributing to Joomla!.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Videos== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Learn How to test patch with this video series &#039;&#039;How to &amp;quot;Patch Test&amp;quot; Joomla! code&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; *Part 1: Introduction&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=zmnWkMisdJk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; *Part 2: Neard Web Server setup&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=Tqj-BAmPGLA}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; *Part 3: Sample issue testing.&amp;lt;/translate&amp;gt; &lt;br /&gt;
{{#widget:YouTube|id=s881RLaFO8U}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Link== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[https://brian.teeman.net/joomla/873-a-dummies-guide-to-joomla-bug-testing Brian Teeman: A Dummies Guide to Joomla Bug Testing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Squad{{#translation:}}]]&lt;br /&gt;
[[Category:Bug Tracker{{#translation:}}]]&lt;br /&gt;
[[Category:Core Contributions{{#translation:}}]]&lt;br /&gt;
[[Category: Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Multilingual_Associations/Developers&amp;diff=648524</id>
		<title>J3.x:Multilingual Associations/Developers</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Multilingual_Associations/Developers&amp;diff=648524"/>
		<updated>2020-03-01T21:53:12Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
{{section portal heading|icon=code|title=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Developers&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
{{-}}&lt;br /&gt;
{{J3.x:Multilingual_Associations/TOC/&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Developers== &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Introduction === &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
If your extension can support association and you would like it to be available in the Associations Manager, you&#039;ll have to provide a helper class.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Basically, you need to create a file &amp;lt;tt&amp;gt;associations.php&amp;lt;/tt&amp;gt; in your component administrator helper directory. If your component is named &amp;lt;tt&amp;gt;Example&amp;lt;/tt&amp;gt; the helper class should be named &amp;lt;tt&amp;gt;ExampleAssociationsHelper&amp;lt;/tt&amp;gt; and this class needs to extend &amp;lt;tt&amp;gt;JAssociationExtensionHelper&amp;lt;/tt&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Add three protected variables === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * The extension name&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var     array   $extension&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   3.7.0&lt;br /&gt;
	 */&lt;br /&gt;
	protected $extension = &#039;com_example&#039;;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Array of item types&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var     array   $itemTypes&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   3.7.0&lt;br /&gt;
	 */&lt;br /&gt;
	protected $itemTypes = array(&#039;item&#039;);&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Has the extension association support&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var     boolean   $associationsSupport&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   3.7.0&lt;br /&gt;
	 */&lt;br /&gt;
	protected $associationsSupport = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Add three public functions === &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Method &amp;lt;tt&amp;gt;getAssociations&amp;lt;/tt&amp;gt; ==== &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
This function should return an array of associated items.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get the associated items for an item&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   string  $typeName  The item type&lt;br /&gt;
	 * @param   int     $id        The id of item for which we need the associated items&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  array&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   3.7.0&lt;br /&gt;
	 */&lt;br /&gt;
	public function getAssociations($typeName, $id)&lt;br /&gt;
	{&lt;br /&gt;
		// The code goes here.&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Method &amp;lt;tt&amp;gt;getItem&amp;lt;/tt&amp;gt; ==== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
This function should return a JTable Object for the type and id. Don&#039;t forget something like &amp;lt;tt&amp;gt;JTable::addIncludePath(__DIR__ . &#039;/../tables&#039;);&amp;lt;/tt&amp;gt; so that the class can be found.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get item information&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   string  $typeName  The item type&lt;br /&gt;
	 * @param   int     $id        The id of item for which we need the associated items&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  JTable|null&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   3.7.0&lt;br /&gt;
	 */&lt;br /&gt;
	public function getItem($typeName, $id)&lt;br /&gt;
	{&lt;br /&gt;
		// The code goes here.&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Method &amp;lt;tt&amp;gt;getType&amp;lt;/tt&amp;gt; ==== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
This function should return an array of item types.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get information about the type&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   string  $typeName  The item type&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  array  Array of item types&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   3.7.0&lt;br /&gt;
	 */&lt;br /&gt;
	public function getType($typeName = &#039;&#039;)&lt;br /&gt;
	{&lt;br /&gt;
		// The code goes here.&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
Here you set up information per type, the function returns an array.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
array(&lt;br /&gt;
	&#039;fields&#039;  =&amp;gt; $fields,&lt;br /&gt;
	&#039;support&#039; =&amp;gt; $support,&lt;br /&gt;
	&#039;tables&#039;  =&amp;gt; $tables,&lt;br /&gt;
	&#039;joins&#039;   =&amp;gt; $joins,&lt;br /&gt;
	&#039;title&#039;   =&amp;gt; $title,&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
For fields and support we have a template function that set defaults so you only have to overwrite what is different in your extension.&lt;br /&gt;
Please make sure that $fields[&#039;title&#039;] and $fields[&#039;state&#039;] are set correctly.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Example of Implementation === &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
You can find an example for integrating multilingual associations in a component at GitHub.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/joomla/joomla-cms/blob/staging/administrator/components/com_content/helpers/associations.php com_content]&lt;br /&gt;
* [https://github.com/joomla/joomla-cms/blob/staging/administrator/components/com_contact/helpers/associations.php com_contact]&lt;br /&gt;
* [https://github.com/joomla/joomla-cms/blob/staging/administrator/components/com_newsfeeds/helpers/associations.php com_newsfeeds]&lt;br /&gt;
* [https://github.com/joomla/joomla-cms/blob/staging/administrator/components/com_menus/helpers/associations.php com_menus]&lt;br /&gt;
* [https://github.com/joomla-extensions/weblinks/blob/master/src/administrator/components/com_weblinks/helpers/associations.php com_weblinks]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
For more information about the feature itself please have a look into the [https://github.com/joomla/joomla-cms/pull/13537 Pull Request] for this feature.&lt;br /&gt;
&lt;br /&gt;
If you have problems implementing the side-by-side view in com̞_associations please have a look into the [https://github.com/joomla/joomla-cms/issues/28016 Github Issue].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Multilingual_Associations/SidebySide|&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Prev: Side by Side View&amp;lt;/translate&amp;gt;|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Beginners]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.7]]&lt;br /&gt;
[[Category:Language Management]]&lt;br /&gt;
[[Category:Languages]]&lt;br /&gt;
[[Category:Joomla! Website Management]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User:Astridx&amp;diff=626105</id>
		<title>User:Astridx</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User:Astridx&amp;diff=626105"/>
		<updated>2019-08-24T08:17:30Z</updated>

		<summary type="html">&lt;p&gt;Astridx: /* Creating a Simple Component for Joomla!4.x */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Creating a Simple Component for Joomla!4.x =&lt;br /&gt;
&lt;br /&gt;
See https://github.com/astridx/boilerplate/wiki&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User:Astridx&amp;diff=626104</id>
		<title>User:Astridx</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User:Astridx&amp;diff=626104"/>
		<updated>2019-08-24T08:10:38Z</updated>

		<summary type="html">&lt;p&gt;Astridx: /* Creating a Simple Component for Joomla!4.x */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Creating a Simple Component for Joomla!4.x =&lt;br /&gt;
&lt;br /&gt;
See https://github.com/astridx/boilerplate/wiki&lt;br /&gt;
&lt;br /&gt;
ǃ[d](name.png)&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User:Astridx&amp;diff=626103</id>
		<title>User:Astridx</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User:Astridx&amp;diff=626103"/>
		<updated>2019-08-24T08:10:14Z</updated>

		<summary type="html">&lt;p&gt;Astridx: /* Creating a Simple Component for Joomla!4.x */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Creating a Simple Component for Joomla!4.x =&lt;br /&gt;
&lt;br /&gt;
See https://github.com/astridx/boilerplate/wiki&lt;br /&gt;
&lt;br /&gt;
ǃ[d]()&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User:Astridx&amp;diff=624593</id>
		<title>User:Astridx</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User:Astridx&amp;diff=624593"/>
		<updated>2019-08-22T12:51:12Z</updated>

		<summary type="html">&lt;p&gt;Astridx: Replaced content with &amp;quot;= Creating a Simple Component for Joomla!4.x =  See https://github.com/astridx/boilerplate/wiki&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Creating a Simple Component for Joomla!4.x =&lt;br /&gt;
&lt;br /&gt;
See https://github.com/astridx/boilerplate/wiki&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_23_1.png&amp;diff=623988</id>
		<title>File:As j4 t 23 1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_23_1.png&amp;diff=623988"/>
		<updated>2019-08-19T17:01:28Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_22_2.png&amp;diff=623987</id>
		<title>File:As j4 t 22 2.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_22_2.png&amp;diff=623987"/>
		<updated>2019-08-19T17:01:13Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_22_1.png&amp;diff=623986</id>
		<title>File:As j4 t 22 1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_22_1.png&amp;diff=623986"/>
		<updated>2019-08-19T17:00:59Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_21_1.png&amp;diff=623985</id>
		<title>File:As j4 t 21 1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_21_1.png&amp;diff=623985"/>
		<updated>2019-08-19T17:00:41Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Componenttutorial20a.png&amp;diff=623984</id>
		<title>File:Componenttutorial20a.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Componenttutorial20a.png&amp;diff=623984"/>
		<updated>2019-08-19T17:00:26Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:As_j4-t_19_1.png&amp;diff=623983</id>
		<title>File:As j4-t 19 1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:As_j4-t_19_1.png&amp;diff=623983"/>
		<updated>2019-08-19T16:59:08Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:As_j4-t_18_1.png&amp;diff=623982</id>
		<title>File:As j4-t 18 1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:As_j4-t_18_1.png&amp;diff=623982"/>
		<updated>2019-08-19T16:58:52Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:As_j4-t_17_1.png&amp;diff=623981</id>
		<title>File:As j4-t 17 1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:As_j4-t_17_1.png&amp;diff=623981"/>
		<updated>2019-08-19T16:58:36Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:As_j4-t_17_2.png&amp;diff=623980</id>
		<title>File:As j4-t 17 2.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:As_j4-t_17_2.png&amp;diff=623980"/>
		<updated>2019-08-19T16:58:29Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_16_1.png&amp;diff=623979</id>
		<title>File:As j4 t 16 1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_16_1.png&amp;diff=623979"/>
		<updated>2019-08-19T16:57:22Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_15b_1.png&amp;diff=623978</id>
		<title>File:As j4 t 15b 1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_15b_1.png&amp;diff=623978"/>
		<updated>2019-08-19T16:56:56Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_15a_6.png&amp;diff=623977</id>
		<title>File:As j4 t 15a 6.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_15a_6.png&amp;diff=623977"/>
		<updated>2019-08-19T16:56:28Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_15a_5.png&amp;diff=623976</id>
		<title>File:As j4 t 15a 5.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:As_j4_t_15a_5.png&amp;diff=623976"/>
		<updated>2019-08-19T16:56:00Z</updated>

		<summary type="html">&lt;p&gt;Astridx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Astridx</name></author>
	</entry>
</feed>