create-kaixa
Version:
Katalon Studio wrapper to make manual test writing much easier.
248 lines (202 loc) • 22.9 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<title>Home - Documentation</title>
<script src="scripts/prettify/prettify.js"></script>
<script src="scripts/prettify/lang-css.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
<script src="scripts/nav.js" defer></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger" class="navicon-button x">
<div class="navicon"></div>
</label>
<label for="nav-trigger" class="overlay"></label>
<nav style="border-right: 2px solid #ccc; padding-bottom: 25px;" >
<h2><a style="font-size: 27px;" href="index.html">Kaixa for Katalon</a></h2><h3>Functions:</h3><ul><li><a href="Kaixa.html">Kaixa</a><ul class='methods'><li data-type='method'><a href="Kaixa.html#.launchLTIUsingToken">launchLTIUsingToken</a></li><li data-type='method'><a href="Kaixa.html#assertAbsent">assertAbsent</a></li><li data-type='method'><a href="Kaixa.html#assertAbsentWithContents">assertAbsentWithContents</a></li><li data-type='method'><a href="Kaixa.html#assertDoesNotHaveClass">assertDoesNotHaveClass</a></li><li data-type='method'><a href="Kaixa.html#assertExists">assertExists</a></li><li data-type='method'><a href="Kaixa.html#assertExistsWithContents">assertExistsWithContents</a></li><li data-type='method'><a href="Kaixa.html#assertFalse">assertFalse</a></li><li data-type='method'><a href="Kaixa.html#assertHasClass">assertHasClass</a></li><li data-type='method'><a href="Kaixa.html#assertNumElements">assertNumElements</a></li><li data-type='method'><a href="Kaixa.html#assertNumElements">assertNumElements</a></li><li data-type='method'><a href="Kaixa.html#assertTrue">assertTrue</a></li><li data-type='method'><a href="Kaixa.html#chooseFile">chooseFile</a></li><li data-type='method'><a href="Kaixa.html#chooseSelectByLabel">chooseSelectByLabel</a></li><li data-type='method'><a href="Kaixa.html#chooseSelectByValue">chooseSelectByValue</a></li><li data-type='method'><a href="Kaixa.html#click">click</a></li><li data-type='method'><a href="Kaixa.html#clickByContents">clickByContents</a></li><li data-type='method'><a href="Kaixa.html#closeWindow">closeWindow</a></li><li data-type='method'><a href="Kaixa.html#convertToTestObject">convertToTestObject</a></li><li data-type='method'><a href="Kaixa.html#convertToWebElement">convertToWebElement</a></li><li data-type='method'><a href="Kaixa.html#descendantOf">descendantOf</a></li><li data-type='method'><a href="Kaixa.html#done">done</a></li><li data-type='method'><a href="Kaixa.html#elementAbsent">elementAbsent</a></li><li data-type='method'><a href="Kaixa.html#elementExists">elementExists</a></li><li data-type='method'><a href="Kaixa.html#elementWithContentsAbsent">elementWithContentsAbsent</a></li><li data-type='method'><a href="Kaixa.html#elementWithContentsExists">elementWithContentsExists</a></li><li data-type='method'><a href="Kaixa.html#ensureTestObject">ensureTestObject</a></li><li data-type='method'><a href="Kaixa.html#exitWithError">exitWithError</a></li><li data-type='method'><a href="Kaixa.html#extractDataFromClass">extractDataFromClass</a></li><li data-type='method'><a href="Kaixa.html#extractDataFromClassByContents">extractDataFromClassByContents</a></li><li data-type='method'><a href="Kaixa.html#find">find</a></li><li data-type='method'><a href="Kaixa.html#findByContents">findByContents</a></li><li data-type='method'><a href="Kaixa.html#findByXPath">findByXPath</a></li><li data-type='method'><a href="Kaixa.html#findChildOfAncestor">findChildOfAncestor</a></li><li data-type='method'><a href="Kaixa.html#genTextOfLength">genTextOfLength</a></li><li data-type='method'><a href="Kaixa.html#genTextOfLength">genTextOfLength</a></li><li data-type='method'><a href="Kaixa.html#getAttribute">getAttribute</a></li><li data-type='method'><a href="Kaixa.html#getContentsXPath">getContentsXPath</a></li><li data-type='method'><a href="Kaixa.html#getCurrentDay">getCurrentDay</a></li><li data-type='method'><a href="Kaixa.html#getCurrentMonth">getCurrentMonth</a></li><li data-type='method'><a href="Kaixa.html#getCurrentYear">getCurrentYear</a></li><li data-type='method'><a href="Kaixa.html#getDateString">getDateString</a></li><li data-type='method'><a href="Kaixa.html#getDateString">getDateString</a></li><li data-type='method'><a href="Kaixa.html#getDayAfterDays">getDayAfterDays</a></li><li data-type='method'><a href="Kaixa.html#getDefaultAppName">getDefaultAppName</a></li><li data-type='method'><a href="Kaixa.html#getDefaultCourseId">getDefaultCourseId</a></li><li data-type='method'><a href="Kaixa.html#getDefaultHost">getDefaultHost</a></li><li data-type='method'><a href="Kaixa.html#getDefaultProtocol">getDefaultProtocol</a></li><li data-type='method'><a href="Kaixa.html#getDependentProfileValue">getDependentProfileValue</a></li><li data-type='method'><a href="Kaixa.html#getJSON">getJSON</a></li><li data-type='method'><a href="Kaixa.html#getJSONArray">getJSONArray</a></li><li data-type='method'><a href="Kaixa.html#getJSONObject">getJSONObject</a></li><li data-type='method'><a href="Kaixa.html#getJSONString">getJSONString</a></li><li data-type='method'><a href="Kaixa.html#getMonthAfterDays">getMonthAfterDays</a></li><li data-type='method'><a href="Kaixa.html#getProfileValue">getProfileValue</a></li><li data-type='method'><a href="Kaixa.html#getQuery">getQuery</a></li><li data-type='method'><a href="Kaixa.html#getSource">getSource</a></li><li data-type='method'><a href="Kaixa.html#getSpecialChars">getSpecialChars</a></li><li data-type='method'><a href="Kaixa.html#getText">getText</a></li><li data-type='method'><a href="Kaixa.html#getTitle">getTitle</a></li><li data-type='method'><a href="Kaixa.html#getURL">getURL</a></li><li data-type='method'><a href="Kaixa.html#getYearAfterDays">getYearAfterDays</a></li><li data-type='method'><a href="Kaixa.html#handleHarvardKey">handleHarvardKey</a></li><li data-type='method'><a href="Kaixa.html#hasProfileValue">hasProfileValue</a></li><li data-type='method'><a href="Kaixa.html#isSafari">isSafari</a></li><li data-type='method'><a href="Kaixa.html#launchAs">launchAs</a></li><li data-type='method'><a href="Kaixa.html#listSelectLabels">listSelectLabels</a></li><li data-type='method'><a href="Kaixa.html#locationToURL">locationToURL</a></li><li data-type='method'><a href="Kaixa.html#log">log</a></li><li data-type='method'><a href="Kaixa.html#openAnchorInSameTab">openAnchorInSameTab</a></li><li data-type='method'><a href="Kaixa.html#padWithZeros">padWithZeros</a></li><li data-type='method'><a href="Kaixa.html#parentOf">parentOf</a></li><li data-type='method'><a href="Kaixa.html#pause">pause</a></li><li data-type='method'><a href="Kaixa.html#prompt">prompt</a></li><li data-type='method'><a href="Kaixa.html#promptPassword">promptPassword</a></li><li data-type='method'><a href="Kaixa.html#refresh">refresh</a></li><li data-type='method'><a href="Kaixa.html#runScript">runScript</a></li><li data-type='method'><a href="Kaixa.html#scrollTo">scrollTo</a></li><li data-type='method'><a href="Kaixa.html#sendAPIRequest">sendAPIRequest</a></li><li data-type='method'><a href="Kaixa.html#sendGETRequest">sendGETRequest</a></li><li data-type='method'><a href="Kaixa.html#startControllingIFrame">startControllingIFrame</a></li><li data-type='method'><a href="Kaixa.html#stopControllingIFrame">stopControllingIFrame</a></li><li data-type='method'><a href="Kaixa.html#typeInto">typeInto</a></li><li data-type='method'><a href="Kaixa.html#uniquify">uniquify</a></li><li data-type='method'><a href="Kaixa.html#uniquifySimple">uniquifySimple</a></li><li data-type='method'><a href="Kaixa.html#visit">visit</a></li><li data-type='method'><a href="Kaixa.html#visitCanvasDELETEEndpoint">visitCanvasDELETEEndpoint</a></li><li data-type='method'><a href="Kaixa.html#visitCanvasGETEndpoint">visitCanvasGETEndpoint</a></li><li data-type='method'><a href="Kaixa.html#visitCanvasPOSTEndpoint">visitCanvasPOSTEndpoint</a></li><li data-type='method'><a href="Kaixa.html#waitFor">waitFor</a></li><li data-type='method'><a href="Kaixa.html#waitForAtLeastOneElementPresent">waitForAtLeastOneElementPresent</a></li><li data-type='method'><a href="Kaixa.html#waitForElementAbsent">waitForElementAbsent</a></li><li data-type='method'><a href="Kaixa.html#waitForElementPresent">waitForElementPresent</a></li><li data-type='method'><a href="Kaixa.html#waitForElementVisible">waitForElementVisible</a></li><li data-type='method'><a href="Kaixa.html#waitForElementWithContentsPresent">waitForElementWithContentsPresent</a></li><li data-type='method'><a href="Kaixa.html#waitForElementWithContentsVisible">waitForElementWithContentsVisible</a></li></ul></li></ul>
</nav>
<div id="main">
<section class="package">
<h3> </h3>
</section>
<section class="readme usertext">
<article><h1>Kaixa, a simple and customizable way to write Katalon tests</h1>
<p>Kaixa is pronounced "Kaisha" and is taken from the Catalan word for "box" as in "toolbox"</p>
<h1 style="display: flex; align-items: center;">
<div style="flex-grow: 1; height: 1px; background: #ccc; margin-right: 10px;">
</div>
<div>
Quickstart
</div>
<div style="flex-grow: 1; height: 1px; background: #ccc; margin-left: 10px;">
</div>
</h1>
<p>You need <code>node</code> and <code>npm</code> installed. Visit <a href="https://nodejs.org">nodejs.org</a> to install those.</p>
<h2>1. Navigate to your Katalon project in terminal</h2>
<pre class="prettyprint source lang-bash"><code>cd ~/Katalon\ Studio/MyProject
</code></pre>
<h2>2. Add Kaixa using the <code>npm init kaixa</code> command</h2>
<pre class="prettyprint source lang-bash"><code>npm init kaixa
</code></pre>
<h1 style="display: flex; align-items: center;">
<div style="flex-grow: 1; height: 1px; background: #ccc; margin-right: 10px;">
</div>
<div>
Updating Kaixa
</div>
<div style="flex-grow: 1; height: 1px; background: #ccc; margin-left: 10px;">
</div>
</h1>
<p>To update Kaixa, just repeat steps 1 and 2 whenever you want to update your version of Kaixa.</p>
<pre class="prettyprint source lang-bash"><code>cd ~/Katalon\ Studio/MyProject
npm init kaixa
</code></pre>
<h1 style="display: flex; align-items: center;">
<div style="flex-grow: 1; height: 1px; background: #ccc; margin-right: 10px;">
</div>
<div>
Writing Tests
</div>
<div style="flex-grow: 1; height: 1px; background: #ccc; margin-left: 10px;">
</div>
</h1>
<h2>1. Create a test and switch to "script" view</h2>
<h2>2. Use Kaixa functions to write your test</h2>
<p>That's it! Here's an example:</p>
<pre class="prettyprint source lang-js"><code>// Log in
Kaixa.typeInto('#username', 'TestUser');
Kaixa.typeInto('#password', '149t8q23y');
Kaixa.click('#login-button');
// Do something interesting
Kaixa.click('.btn-interesting');
// Close the tool
Kaixa.click('#close-button');
// Clean everything up
Kaixa.done();
</code></pre>
<h1 style="display: flex; align-items: center;">
<div style="flex-grow: 1; height: 1px; background: #ccc; margin-right: 10px;">
</div>
<div>
Functions by Category:
</div>
<div style="flex-grow: 1; height: 1px; background: #ccc; margin-left: 10px;">
</div>
</h1>
<h2><strong>Interactions</strong> – interact with stuff on the page</h2>
<ul>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#chooseFile">chooseFile</a> - set the file for a file chooser</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#chooseSelectByLabel">chooseSelectByLabel</a> - choose select item by label</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#chooseSelectByValue">chooseSelectByValue</a> - choose select item by value</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#click">click</a> - click something</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#clickByContents">clickByContents</a> - click something (find it by its contents)</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#openAnchorInSameTab">openAnchorInSameTab</a> - click an anchor but force it to open in the same tab</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#pause">pause</a> - wait until the user clicks to continue</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#runScript">runScript</a> - run javascript on the page</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#scrollTo">scrollTo</a> - scroll to an element</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#typeInto">typeInto</a> - type text into an element</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#visit">visit</a> - visit a page</li>
</ul>
<h2><strong>Browser Actions</strong> – interact with the browser</h2>
<ul>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#done">done</a> - close the browser and clean up</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#closeWindow">closeWindow</a> - just close the current window</li>
</ul>
<h2><strong>Harvard Functions</strong> – special functions for interacting with Harvard services</h2>
<ul>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#handleHarvardKey">handleHarvardKey</a> - handle a HarvardKey login page</li>
</ul>
<h2><strong>Canvas & LTI Functions</strong> – special functions for Canvas apps</h2>
<ul>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#launchAs">launchAs</a> - launch an LTI as a user</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#visitCanvasEndpoint">visitCanvasEndpoint</a> - visit a Canvas API GET endpoint</li>
</ul>
<h2><strong>Intelligent Waiting</strong> – wait better</h2>
<ul>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#waitFor">waitFor</a> - wait for a set amount of time</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#waitForElementAbsent">waitForElementAbsent</a> - wait until an element is absent</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#waitForElementPresent">waitForElementPresent</a> - wait until an element is present (on the page even if offscreen)</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#waitForElementVisible">waitForElementVisible</a> - wait until an element is visible (on the page and visible)</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#waitForElementWithContentsPresent">waitForElementWithContentsPresent</a> - wait for ane element with specific contents to be present (on the page even if offscreen)</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#waitForElementWithContentsVisible">waitForElementWithContentsVisible</a> - wait for an element with specific contents to be visible (on the page and visible)</li>
</ul>
<h2><strong>Assertions</strong> – make sure your app behaves properly</h2>
<ul>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#assertAbsent">assertAbsent</a> - make sure an element is absent</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#assertAbsentWithContents">assertAbsentWithContents</a> - make sure an element is absent (find it by its contents)</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#assertDoesNotHaveClass">assertDoesNotHaveClass</a> - make sure an element does not have a certain css class</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#assertExists">assertExists</a> - make sure an element exists</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#assertExistsWithContents">assertExistsWithContents</a> - make sure an element exists (find it by its contents)</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#assertHasClass">assertHasClass</a> - make sure an element has a certain css class</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#assertNumElements">assertNumElements</a> - make sure an element shows up a certain number of times</li>
</ul>
<h2><strong>Handy Functions</strong> – useful utilities</h2>
<ul>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#uniquify">uniquify</a> - add a unique, random tag to a string</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#uniquifySimple">uniquifySimple</a> - add a simple unique, random tag to a string</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#prompt">prompt</a> - ask the user to provide text</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#promptPassword">promptPassword</a> - ask the user to provide a password</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getProfileValue">getProfileValue</a> - get a value from the profile</li>
</ul>
<h2><strong>Elements</strong> – deal with elements</h2>
<ul>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#find">find</a> - find an element by its css selector</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#findByContents">findByContents</a> - find an element by its contents and selector</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#findChildOfAncestor">findChildOfAncestor</a> - find an element by traversing the element tree up to an ancestor and back down to a child</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#elementAbsent">elementAbsent</a> - check if an element is absent</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#elementExists">elementExists</a> - check if an element exists</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#elementWithContentsAbsent">elementWithContentsAbsent</a> - check if an element is absent (find it by its contents)</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#elementWithContentsExists">elementWithContentsExists</a> - check if an element exists (find it by its contents)</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#descendantOf">descendantOf</a> - get the descendant of an element</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#parentOf">parentOf</a> - get the parent of an element</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getNumElements">getNumElements</a> - get the number of elements on a page that match a selector</li>
</ul>
<h2><strong>Data</strong> – get data from the page or elements</h2>
<ul>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#extractDataFromClass">extractDataFromClass</a> - extract data from a css class</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#extractDataFromClassByContents">extractDataFromClassByContents</a> - extract data from a css class (find the element by its contents)</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getAttribute">getAttribute</a> - get the value of an element attribute</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getJSON">getJSON</a> - get the JSON on the page</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getQuery">getQuery</a> - get the query parameters</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getSource">getSource</a> - get the page source</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getText">getText</a> - get the text inside an element</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getTitle">getTitle</a> - get the title of the page</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getURL">getURL</a> - get the URL of the current tab</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getCurrentMonth">getCurrentMonth</a> - get the current month</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getCurrentDay">getCurrentDay</a> - get the current day</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getCurrentYear">getCurrentYear</a> - get the current year</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getDateString">getDateString</a> - get the current date in mm/dd/yyyy format</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getMonthAfterDays">getMonthAfterDays</a> - get the month that it will be after a certain number of days</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getDayAfterDays">getDayAfterDays</a> - get the day that it will be after a certain number of days</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getYearAfterDays">getYearAfterDays</a> - get the year that it will be after a certain number of days</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#getDateStringAfterDays">getDateStringAfterDays</a> - get the date in mm/dd/yyyy format as it will be after a certain number of days</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#padNumber">padNumber</a> - pad a number so that it will be at least a certain number of digits</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#isSafari">isSafari</a> - check if the current browser is Safari</li>
</ul>
<h2><strong>Logging</strong> – write to the log</h2>
<ul>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#log">log</a> - add something to the log</li>
</ul>
<h2><strong>Defaults</strong> – set behavior defaults</h2>
<ul>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#setDefaultHost">setDefaultHost</a> - set the default hostname</li>
<li><a href="https://harvard-edtech.github.io/create-kaixa/Kaixa.html#setDontUseHTTPS">setDontUseHTTPS</a> - set whether to use HTTPS by default</li>
</ul></article>
</section>
</div>
<br class="clear">
<footer>
We use <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> and the <a href="https://github.com/clenemt/docdash">docdash</a> theme to generate our docs.
</footer>
<script>prettyPrint();</script>
<script src="scripts/polyfill.js"></script>
<script src="scripts/linenumber.js"></script>
</body>
</html>