Coding projects update

I now have three active repositories up on my Github account. These are:

misc-configs: This one is for miscellaneous config files that are useful for the tests in the other repositories. What’s in here will mostly make sense to you if you are familiar with a) how to import data into a WordPress site, b) how to import Collections or Environment files into Postman, and/or c) how to use a YAML file to run Docker Compose to launch one or more containers.

wp-test-demo-java: This one is for my demo of testing the REST API endpoints made available by WordPress for any given site. Phase 1 of the work on this demo is complete, in which I test against the endpoints that handle publicly accessible data. I.e., the kinds of things you could find out about a WordPress site if you’re just a visitor to the site.

wp-test-demo-java-selenium: This demo is also using my test WordPress site, but here, I am doing front end testing rather than service testing. I’m using the Selenide Java library to run tests against the site via Selenium, a widely used automation framework for testing web pages. Selenide is a layer on top of Selenium that does the heavy lifting of Selenium setup for me, and frees me up to focus on the test cases I want to run.

This is a work in progress, but as of this post it has 27 test cases in it. There are more to come.

Other projects that’ll be showing up on my Github account include:

  • Phase 2 of the REST API project, which would involve hitting service endpoints that specifically require authentication.
  • Porting the Selenium tests over into Python, and structuring them in such a way as to be similar to the Python test framework we used on my former team at Big Fish. The intent here would be to demonstrate my ability to use Selenium in Python, and to write up a framework for it. (Which will require more work than the equivalent testing in Java!)
  • The teeny WordPress plugin I want to do that’ll make nice Dreamwidth-style user and community name tags in a post or page for me. (This is the one I’ve mentioned before that would be an expansion on the very old plugin that does this for LJ user and community tags.) This would be written in PHP, and the intent HERE would be to show my comfort level with PHP. I haven’t used this language as much in a professional context, but I HAVE used it a lot over the years dealing with my websites, and I can demonstrate that here.

Stretch goals:

  • Do something in JavaScript. What, I don’t know yet, but the obvious possibility would be to port some or all of the previously mentioned Selenium tests.
  • Since I do have a locally running plugin on annathepiper.org that fuels my Roleplay Logs page, time permitting, I’d like to do a more solid version of that. Right now the plugin I’m running is a hack of the previous non-Wordpress-based code, and it talks to a database outside the WordPress structure. A cleaner version of this would actually be properly integrated with WordPress. If I get really fancy, I could do an entry form in the Admin UI for WordPress to allow the addition of new logs, and possibly even reading them in via the Media section of the site. This would, of course, also be written in PHP. More on this as events warrant!

Today’s WordPress Test Demo update

Good progress on the coding project today! \0/ Things accomplished:

  • Added new test cases involving Categories, Tags, Pages, and Comments, to bring the total number of test cases up to 10
  • Added the ability to run the cases via a Maven configuration as well as TestNG, and updated my pom.xml to use the testng.xml as its suite file
  • Checked all the new test cases and related work into wp-test-demo-java
  • Renamed my wordpress-dev repo to misc-configs, because that’s really what it’s for miscellaneous config files
  • Updated my Postman collection to include all the endpoints for the test cases I wrote today, and checked the new version of that into misc-configs
  • Updated the Readmes on both wp-test-demo-java and misc-configs to more clearly explain what the repos are for, particularly wp-test-demo-java, as I’ll be pointing recruiters at that
  • Installed Jenkins (again) on my dev laptop, so that I can run the automation as a local Jenkins job as well as within IntelliJ, and to keep up my practice using Jenkins

I have decided, too, that I’ll be doing this project in phases.

Phase 1: REST API tests that hit the endpoints that can serve up publicly available data. I.e., the kinds of data you’d see as a user just browsing a WordPress site.

Phase 2: Selenium-based tests that will do front-end type tests. For example, “If I click on this link, does it take me to this expected target page?” Or, “If I click on this thing on the menu, do I get the correct dropdown off of it?”

Phase 3: This is the ambitious part. There are also REST API endpoints for WordPress that’ll let you get at the stuff you’d ONLY see as an authenticated user, such as post revisions and settings and the like. Time permitting, I may learn about the various ways to actually do that authentication properly so that the test suite can actually get at those endpoints.

Right now, though, I’m going to focus on phases 1 and 2.

The WordPress testing demo project is now underway

Spent most of today (very roughly during ‘work’ hours, just to try to keep to the whole idea of coding to a schedule) working on the WordPress testing demo project I talked about in my last post. As of this writing, I have some actual working things checked in up on Github. There’s only one functional test case so far, but it’s a start!

What I accomplished today:

  • Creating a Github repo for this work
  • Read about the API endpoints that WordPress makes available for any given site, some of which are publicly viewable, others of which require you to log in as a valid user
  • Started a Postman Collection to keep track of the endpoints I’ll be playing with for my test site, and checked an initial version of this in on Github
  • Refreshed my memory about how Unirest works, as this was the library we used at Big Fish to talk to various services; maybe not the most current library to use, but it’s the one I know, so I’m going with this for demo purposes
  • Got IntelliJ on the Linux partition of my dev laptop updated to the latest version
  • Built the actual project in IntelliJ, as a Maven project, so it’d have the correct file structure and a pom.xml file I could add dependencies to
  • Started building a client class that will use Unirest to hit those endpoints for my local test site
  • Built a BaseTest class in charge of doing setup used by all the test classes I’ll be making
  • Built a TestPosts class to start the test cases for the “Posts” endpoints in the aforementioned API, and now it even has an initial functional test case!

Now that I have an actual working (if tiny) framework here, I should be able to fill in some test cases reasonably quickly.

Note also that the test suite assumes I am running the WordPress test site locally. For bonus usefulness I should make some sort of healthcheck test case that verifies that the test site is in fact UP.

Further planning for doing my coding demo project

Since I continue to have time on my hands and no active leads bringing me in for interviews this coming week (so far), I’m moving forward with laying down the plans for my coding demo.

As I said in my last post about this (here for those of you reading on Dreamwidth), I’ve succeeded in setting up a test WordPress site in Docker.

The rest of this operation is going to look something like this, at least for phase 1 of this project:

  • Actually get some content into that test WordPress site. This will probably involve just doing a database copy down from my backup WordPress site up on angelahighland.wordpress.com. If for some reason I can’t do that, I’ll install a lorem ipsum generator plugin (there are a few for WordPress, I looked) and generate purely random content.
  • Study up on the REST API WordPress makes available for any given install.
  • Once I know what service endpoints are available, use that to scope out what test cases I can do.
  • Write out those test cases in a Java BVT suite, similar to the ones I wrote at Big Fish. Tools I will need for this: IntelliJ, TestNG.

A possible Phase 2 for this project will involve extending the testing to include front-end testing. In other words (for those of you unfamiliar with how web testing works), hitting the pages of the test site in a browser and verifying that expected things are there, and/or that you are able to do certain things (e.g., log in, do a search, leave a comment). Tools I will need for this: Selenium (also in a Docker image), with a side helping of the Selenide framework. This would be a followup on my previous research that I did as one of my last projects at Big Fish.

Possible stretch goal: replicate some of the same test cases in Python, just to brush up on my Python skills. Tools I’d be using in this part of the work: PyCharm.

I’ve been writing out some tasks for myself in Things, by way of a task breakdown, and I suppose this blog post kind of counts as a spec. Ha. :D

And when I’ve got some actual code, I’ll be checking it in on my personal Github account. This will be fun, hopefully, as well as a way to keep my skills active until such time as I can convince somebody to give me another job!

(EDITING TO ADD: This, by the way, is a separate project I’m planning in addition to doing a WordPress plugin! So I’ll have multiple things I can eventually point at by way of demonstrating I can code. What I’m talking about in this post is more along the lines of demonstrating something similar to the last code I wrote at Big Fish.)

Practicing with running WordPress in Docker today

So one of the things I want to do during my between-jobs downtime is practice my coding. And in particular, since I thought it’d be nice to a) start small and b) play with something I’m actually interested in coding (as opposed to, say, just focusing on random interview-type questions which will eventually bore me to tears), I decided I’d try to play with making a small WordPress plugin.

I’ve already done one that I’m running locally on Annathepiper.org: namely, to show y’all my archive of roleplay logs. Eventually I want to do a newer version of that, something that might let me actually practice setting up a simple web service.

For now though I’m going to do something less complicated. There’s a very old plugin called “lj-tag-parser”. This thing has a very simple job: allowing the LJ-style syntax for usernames and communities in your WordPress posts and comments. I’m using it right here on annathepiper.org, which is why you can actually see LJ-style usernames and tags if I write something like, say, userinfoannathepiper.

However, this thing hasn’t been updated in ages. And I thought it’d be nice to expand it to allow Dreamwidth-style syntax in addition to LJ-style, and possibly also allow generation of such tags via shortcodes.

But before I do all of that, I wanted to make sure I could set up a clean WordPress dev install.

In the past, when I’ve played around with dev-type WordPress stuff, I just did this on a separate blog on my annathepiper.org network. But coming at this with my SDET hat on, I thought it’d be cleaner and more appropriate to developing my coding experience if I set it up the way I’d do it in a work environment.

Which means a brand new, clean WordPress dev install. And in particular, using official WordPress and MySQL images from Docker.

For those of you who aren’t in the tech industry, suffice to say that Docker is a tool that lets you do exactly this kind of thing. You can set up a thing you want to play with in its own little container on your system, without having to worry about it interfering with anything else you might be doing. Docker lets you go about this in a few different ways. You can go get official images for things (like, say, the latest WordPress install) and do a single run using that image.

Or, if you want to do something a bit more complicated (like, say, running the official WordPress image AND a MySQL image that you’ll need to actually power the WordPress install), you can chain them together using a thing called Docker Compose.

Docker Compose works by you setting up all the config data you need in a file called docker-compose.yml. I’m still fairly new to the syntax this thing requires, but fortunately, I learned a bit about it while I was still at my previous day job at Big Fish. So I was able to utilize that knowledge to build a file that’d let me set up that clean WordPress dev install I want.

I did have to jump through a few hoops to get all the info I needed, though. Here are some pages that proved useful:

So now, as of this writing, I have a nice little set of Docker containers running on my dev box on Linux. And the nice thing about doing this via Docker, especially, is that I could take this exact same docker-compose.yml, reboot my box into Windows, and use it there too. All I need to be running locally is Docker and Docker Compose. The rest of it comes in with the images I specify!

And for the interested, I have checked in my final docker-compose.yml up on my personal Github account, and you can see it right here.

Weird problem with iCal reminders, can anybody help?

This one’s for any of my fellow Apple users out there who have a Mac running OS X 10.7.2 (the latest update of Lion), and an iPhone or iPad running iOS 5.

I’ve got an iCloud account set up to sync reminders between my devices and my computer. This is working beautifully between my iPhone and iPad, and the reminders are also showing up in iCal on my Mac. But the problem is, on the Mac, I cannot edit them. I can’t even click a reminder to mark it as done; I have to go over to one of the iThings and do it there.

Here’s a screenshot of what I see when I try to doubleclick on one of my iCloud reminders from my Mac!

This don't make no sense
This don't make no sense

userinfospazzkat, who also has his Mac laptop and his iThings updated to the same revisions that I do, has not experienced this problem. However, the main difference I’ve been able to note between his system and mine is that he has a full MobileMe account, including an email address, that he set up to talk to iCloud. I don’t have a MobileMe account; I’ve got iCloud using my Apple ID, which is my gmail address, to log in. I would like to HOPE that this shouldn’t be causing my reminders to be showing up read-only on my Macbook, but hey, I’m QA–I know how theoretical functionality doesn’t necessarily line up with what the code is doing, even after it ships.

So what say you, fellow Mac geeks? Any of you experiencing this problem? Any of you know how to solve it?

The Anna upgrades to Lion report

So yeah! Decided after reading the ginormous Ars Technica writeup of Lion, and after reviewing my system this afternoon to see what PowerPC apps I still had (answer: nothing I couldn’t live without), I decided to go ahead and install Lion tonight. It was definitely the easiest OS upgrade I’ve ever done, I’ll give it that.

And in no particular order, here are things I’ve noticed about it:

One, once I rebooted into the new OS, things were quite a bit sluggish for several minutes–but there were two reasons for that. One, Spotlight went and reindexed everything on the drive. Two, I launched Mail as pretty much one of the first things, and that also needed to do significant updating of its database. So things were pretty pokey until both of these finished up their business.

Two, trying to launch iTunes got me an error message about not being able to open an iTunes Library file, but this was easily fixed by doing a quick check for software updates and downloading iTunes 10.4. iTunes then proceeded to load as per normal.

Three, goddamn, Mail is very… gray now. I’m not sure I approve of that, but we’ll see if it grows on me. Ditto for the new gray scrollbars.

Four, I quite like Launchpad, a new icon at the top of the Dock that’s basically a quick and dirty way to get at all of the apps on your system. If you’re an iPhone or iPad owner this interface will look very familiar, and it lets you swipe through it as well if you have a touchpad on your laptop like I do. You’re supposed to be able to organize the icons into folders like you do on iDevices, but I haven’t tried that yet. I like it less because of the similarity to iOS and more just because it means I can lose several less commonly used icons off my Dock.

Five, I discovered entirely by accident that you can set individual desktop backgrounds on the individual desktops available in the new Mission Control feature–which is cool. It’s a much nicer version of Spaces + Expose and even after playing with it for only a few moments, I’m grooving on it. And now I can go fwip-fwip-fwip-fwip through the Dashboard and all four of my desktops in a quick line, and I see LION! ELEPHANT! ISLAND! GREAT BIG SEA! It’s neat.

Six, if I have a Terminal window up and I’m connected to the MurkMUSH and I get paged, the icon starts bouncing at me and showing a little number on it indicating there’s something that needs my attention. Didn’t do that before.

Seven, hrmm, the Ars Technica review was talking about the dots on icons on the Dock that indicate which ones are launched going away. However, I still see mine!

Time Machine is now doing a massive 9.52GB backup–over our house LAN, no less, so this’ll be a while. But on the whole the upgrade appears to have gone swimmingly. I still need to verify that I can reboot into Win7 as needed, and that I can also launch Parallels to run that Win7 install as a VM, as before. (I did update Parallels since they deployed an update to talk to Lion, or so they took pains to inform users.)

Also still need to see if Safari’s new Reading List feature will seduce me off of Firefox, and what the new document handling model will be like once I get a hold of a version of a word processor that can talk to it. (Mac Word 2008 does not.)

But so far so good. And oh yes, speaking of Mac Word 2008–if you’re using Mac Office on your system, you WILL need 2008 or later if you want to upgrade to Lion, what with Rosetta support being removed. Be on the lookout as well if you’re at all reliant on Microsoft Query, which is part of Excel. That was one of my few PPC apps left on the system, and a bit of judicious Googling showed me that Microsoft has word out that they’re advising anyone reliant on Query to not upgrade yet until they fix that. They’re also reporting that Outlook is having trouble importing data out of Mail once Lion is installed, so people this might affect should keep an eye out for that.

AND! Since I am a Big Fish employee, it does behoove me to point out that older Big Fish releases, being PowerPC games, won’t run on Lion either. Be on the lookout for our powers that be to issue word on what Mac customers should do about those specific games. If there are particular games you don’t want to lose the ability to run yet, you might hold off a bit on the OS install.

More as I observe it! (And dammit, why don’t I have a Lion icon for posting to LJ and Dreamwidth?)

Murknet websites status update

userinfosolarbird is taking care of most of the technical work to transfer our network over to the new connection, but the websites are on me. So I’m making a clean sweep through all of the websites we’re supporting, to try to make sure that they’re all still connecting properly.

And, Internets, I could use your help! We host the following domains. Please let me know if you can reach them both with and without www at the beginning of the URL:

  • aerialscribe.com
  • angelakorrati.com
  • annathepiper.org
  • baconforbirds.com
  • crimeandtheforcesofevil.com
  • enchantedquills.com
  • lexfa.org
  • mediababe.org
  • miminoyes.com
  • monsterhat.com
  • murkworks.net
  • pecktavern.com
  • pmjohnsondesign.com
  • solarbird.net
  • unseeliecourt.net
  • upcc.org
  • uplakekenmore.org
  • uplake.org

ALSO, and this is IMPORTANT:

If you own a domain hosted at our site, you should log into whatever registrar you’re using to make sure that your references to our name servers are up to date. Drop me a comment or send me email at my gmail address (annathepiper) to doublecheck what name servers you should be using!

The things I think of

Yesterday I had an eye exam, which required me to alter my usual morning commute–and sacrificed my daily morning swing through Pike Place Market, on the grounds that I could get to work a lot faster after my appointment was done if I took the 30 and went practically straight to Big Fish, vs. taking a 70-something and going downtown and doing the usual marketwalk.

So when I went through the market in the evening, the Handsomest of Marketboys gave me this stern “where the hell were you?” look and was all “we were going to call hospitals and everything!” To wit: HA. And also, clearly I must make a point of informing my marketpeeps (I must now say marketpeeps since now they have a marketgirl!) in advance when I will not be making my usual rounds.

Which of course led me, geekily brained as I am, to imagining a helpful web page they could consult in further situations of this nature, possibly called isangelacomingtothemarket.com. It would include options like:

  • Yes! Save me a banana!
  • Yes! Those raspberries aren’t going to eat themselves!
  • Yes! userinfosolarbird demands cherries!
  • No! My bus broke down and I’m running late!
  • No! I’m home sick with a cold/the flu/the plague/Kellis-Amberlee!
  • No! I’m working late tonight because all the servers are on FIRE and the QA team is frantically trying to verify when things will be fixed!
  • No! We’re going out to sushi tonight. Mmmmmmm soooooooshi.
  • No! userinfosolarbird and I are heading to Vancouver/Portland/Newfoundland for a Great Big Sea roadtrip! Because blackberries are swoonable and all but they still don’t beat Alan Doyle With a Bouzouki!
  • No! The Murkworks has gone to Disneyland!
  • No! The latest Dresden Files just dropped and I am putting EVERYTHING on hold until I find out what happened to Harry. I’m sure you understand!
  • No! I just sold a novel and am too busy bouncing around the house shrieking!
  • No! I just got my latest rejection letter and am busy sulking at the cats.
  • No! The zombies have risen in Kenmore and userinfosolarbird, userinfospazzkat and I are currently huddled in the upper floor of our house, shooting zombies out of the second story front bedroom window. If I don’t survive, Marc, you can have my iPad as promised. Unless you’re the zombie that killed me.

What else would be on this web page, do you think? Suggest options in the comments!