Depending on your software the "chi-squared test of independence" will be implemented using the chi-squared distribution as an approximation. That will not work with a 6 x 3 table and only 30 observations. You should turn that of and use simulation instead. If using R you could use the argument
simulate.p.value = TRUE with the
chisq.test command. Nonetheless, 30 observations are not much for such a large table so do not expect too much.
My suggestion is a Spearman correlation. If in R, use
cor.test(... , method = "spearman"). It will only test for monotoneous relations but that seems reasonable here. If you do not want that, check out the "Kruskal-Wallis-Test".
should I split the median household incomes into categories of ranges
Do not split data unless forced to by good reasons. Splitting age at a value where those below that value may not vote and those above may, that might be a good reason.
Just so you can use a $\chi^2$-Test instead of Spearman correlation or Kruskal-Wallis test is not a good reason, because splitting does destroy information.
(Whether median splits have any place anywhere is a debate that you do not want to become involved with. Many think, it rarely or almost never has.)