<div dir="ltr"><div><div>Hi<br><br></div>I may not be aware of any test automation available for vtiger CE.<br><br></div><div>We recently started using CodeCeption to automate unit, function & Acceptance testing.  Below is a code snippet from login acceptance. Ofcourse, it needs more asserts. <br></div><div><br></div><div><div style="color:rgb(46,46,46);background-color:rgb(255,255,255);font-family:"GitLab Mono",JetBrains Mono,Menlo,DejaVu Sans Mono,Liberation Mono,Consolas,Ubuntu Mono,Courier New,andale mono,lucida console,monospace,Menlo,Monaco,"Courier New",monospace;font-weight:normal;font-size:12px;line-height:18px;white-space:pre"><div><span style="color:rgb(46,46,46);font-weight:bold">class</span><span style="color:rgb(46,46,46)"> VtigerLoginCest</span></div><div><span style="color:rgb(46,46,46)">{</span></div><div><span style="color:rgb(46,46,46)">    </span><span style="color:rgb(153,153,136);font-style:italic">/**</span></div><div><span style="color:rgb(153,153,136);font-style:italic">     * </span></div><div><span style="color:rgb(153,153,136);font-style:italic">     * @param AcceptanceTester $I</span></div><div><span style="color:rgb(153,153,136);font-style:italic">     * @author Sutharsan Jeganthan (<a href="mailto:sutharsan@radus28.com">sutharsan@radus28.com</a>)</span></div><div><span style="color:rgb(153,153,136);font-style:italic">     * @internal Asserting vtiger login page</span></div><div><span style="color:rgb(153,153,136);font-style:italic">     */</span></div><div><span style="color:rgb(46,46,46)">    </span><span style="color:rgb(46,46,46);font-weight:bold">public</span><span style="color:rgb(46,46,46)"> </span><span style="color:rgb(46,46,46);font-weight:bold">function</span><span style="color:rgb(46,46,46)"> loginpage(AcceptanceTester </span><span style="color:rgb(0,128,128)">$I</span><span style="color:rgb(46,46,46)">)</span></div><div><span style="color:rgb(46,46,46)">    {</span></div><div><span style="color:rgb(46,46,46)">        </span><span style="color:rgb(0,128,128)">$I</span><span style="color:rgb(46,46,46)">->amOnPage(</span><span style="color:rgb(221,17,68)">'/'</span><span style="color:rgb(46,46,46)">);</span></div><div><span style="color:rgb(46,46,46)">        </span><span style="color:rgb(0,128,128)">$I</span><span style="color:rgb(46,46,46)">->see(</span><span style="color:rgb(221,17,68)">'Password'</span><span style="color:rgb(46,46,46)">);</span></div><div><span style="color:rgb(46,46,46)">    }</span></div><br><div><span style="color:rgb(46,46,46)">    </span><span style="color:rgb(153,153,136);font-style:italic">/**</span></div><div><span style="color:rgb(153,153,136);font-style:italic">     * </span></div><div><span style="color:rgb(153,153,136);font-style:italic">     * @param AcceptanceTester $I</span></div><div><span style="color:rgb(153,153,136);font-style:italic">     * @author Sutharsan Jeganthan (<a href="mailto:sutharsan@radus28.com">sutharsan@radus28.com</a>)</span></div><div><span style="color:rgb(153,153,136);font-style:italic">     * @internal Testing Sign in function of vtiger</span></div><div><span style="color:rgb(153,153,136);font-style:italic">     */</span></div><div><span style="color:rgb(46,46,46)">    </span><span style="color:rgb(46,46,46);font-weight:bold">public</span><span style="color:rgb(46,46,46)"> </span><span style="color:rgb(46,46,46);font-weight:bold">function</span><span style="color:rgb(46,46,46)"> signin(AcceptanceTester </span><span style="color:rgb(0,128,128)">$I</span><span style="color:rgb(46,46,46)">)</span></div><div><span style="color:rgb(46,46,46)">    {</span></div><div><span style="color:rgb(46,46,46)">        </span><span style="color:rgb(0,128,128)">$I</span><span style="color:rgb(46,46,46)">->amOnPage(</span><span style="color:rgb(221,17,68)">'/'</span><span style="color:rgb(46,46,46)">);</span></div><div><span style="color:rgb(46,46,46)">        </span><span style="color:rgb(0,128,128)">$I</span><span style="color:rgb(46,46,46)">->fillField(</span><span style="color:rgb(221,17,68)">'username'</span><span style="color:rgb(46,46,46)">, </span><span style="color:rgb(221,17,68)">'admin'</span><span style="color:rgb(46,46,46)">);</span></div><div><span style="color:rgb(46,46,46)">        </span><span style="color:rgb(0,128,128)">$I</span><span style="color:rgb(46,46,46)">->fillField(</span><span style="color:rgb(221,17,68)">'password'</span><span style="color:rgb(46,46,46)">, </span><span style="color:rgb(221,17,68)">'admin'</span><span style="color:rgb(46,46,46)">);</span></div><div><span style="color:rgb(46,46,46)">        </span><span style="color:rgb(0,128,128)">$I</span><span style="color:rgb(46,46,46)">->click(</span><span style="color:rgb(221,17,68)">'Sign in'</span><span style="color:rgb(46,46,46)">);</span></div><div><span style="color:rgb(46,46,46)">        </span><span style="color:rgb(0,128,128)">$I</span><span style="color:rgb(46,46,46)">->see(</span><span style="color:rgb(221,17,68)">'My Dashboard'</span><span style="color:rgb(46,46,46)">);</span></div><div><span style="color:rgb(46,46,46)">    }</span></div><br><div><span style="color:rgb(46,46,46)">    </span><span style="color:rgb(153,153,136);font-style:italic">/**</span></div><div><span style="color:rgb(153,153,136);font-style:italic">     * </span></div><div><span style="color:rgb(153,153,136);font-style:italic">     * @param AcceptanceTester $I</span></div><div><span style="color:rgb(153,153,136);font-style:italic">     * @internal  Asserting logout</span></div><div><span style="color:rgb(153,153,136);font-style:italic">     */</span></div><div><span style="color:rgb(46,46,46)">    </span><span style="color:rgb(46,46,46);font-weight:bold">public</span><span style="color:rgb(46,46,46)"> </span><span style="color:rgb(46,46,46);font-weight:bold">function</span><span style="color:rgb(46,46,46)"> signout(AcceptanceTester </span><span style="color:rgb(0,128,128)">$I</span><span style="color:rgb(46,46,46)">)</span></div><div><span style="color:rgb(46,46,46)">    {</span></div><div><span style="color:rgb(46,46,46)">        </span><span style="color:rgb(0,128,128)">$I</span><span style="color:rgb(46,46,46)">->amOnPage(</span><span style="color:rgb(221,17,68)">'/index.php?module=Users&action=Logout'</span><span style="color:rgb(46,46,46)">);</span></div><div><span style="color:rgb(46,46,46)">        </span><span style="color:rgb(0,128,128)">$I</span><span style="color:rgb(46,46,46)">->see(</span><span style="color:rgb(221,17,68)">'Password'</span><span style="color:rgb(46,46,46)">);</span></div><div><span style="color:rgb(46,46,46)">    }</span></div><div><span style="color:rgb(46,46,46)"><br></span></div><div><span style="color:rgb(46,46,46)">...</span></div><div><span style="color:rgb(46,46,46)"><br></span></div><div><span style="color:rgb(46,46,46)">If there is no other solution, I am happy to start a fork if the community is interested to contribute.<br></span></div></div></div><div><br></div><div><div><div>Thanks<br></div><div>Sutharsan Jeganathan<br></div><div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><span style="color:rgb(102,102,102)">Development Manager<br>
        Radus28 Software Solution<br></span>
        <span style="color:rgb(102,102,102)"><img src="cid:part4.EAFD845F.485F57C8@radus28.com" title="www.radus28.com" alt="Radus28 Software Solution" width="205" height="60"><br>
        123, Level 2, Mc Larens Building<br>
        Baudhaloka Mw.<br>
        Colombo 04<br>
        Sri Lanka<br>
        M : +94773795291<br>
        E  : <a href="mailto:sutharsan@radus28.com" target="_blank">sutharsan@radus28.com</a><br>
        W : <a href="http://www.radus28.com" target="_blank">www.radus28.com</a></span></div></div></div></div></div></div>