import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.io.BufferedWriter;
import java.util.InputMismatchException;
import java.io.IOException;
import java.util.ArrayList;
import java.io.Writer;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author sumit
 */
public class Main {
      public static void main(String[] args) {
            InputStream inputStream = System.in;
            OutputStream outputStream = System.out;
            InputReader in = new InputReader(inputStream);
            OutputWriter out = new OutputWriter(outputStream);
            DSolveTheMaze solver = new DSolveTheMaze();
            solver.solve(1, in, out);
            out.close();
      }

      static class DSolveTheMaze {
            ArrayList<Integer>[] list;

            public void solve(int testNumber, InputReader in, OutputWriter out) {
                  int t = in.nextInt();
                  abc:
                  while (t-- > 0) {
                        int n = in.nextInt();
                        int m = in.nextInt();
                        char[][] mat = new char[n][m];
                        for (int i = 0; i < n; i++) {
                              String str = in.next();
                              mat[i] = str.toCharArray();
                        }

                        for (int j = m - 1; j > 0; j--) {
                              for (int i = 0; i < n; i++) {
                                    if (mat[i][j] == 'B') {
                                          if (mat[i][j - 1] == '.') {
                                                mat[i][j - 1] = '#';
                                          }
                                    }
                              }
                        }

                        for (int j = 0; j < m - 1; j++) {
                              for (int i = 0; i < n; i++) {
                                    if (mat[i][j] == 'B') {
                                          if (mat[i][j + 1] == '.') {
                                                mat[i][j + 1] = '#';
                                          }
                                    }
                              }
                        }

                        for (int i = 0; i < n - 1; i++) {
                              for (int j = 0; j < m; j++) {
                                    if (mat[i][j] == 'B') {
                                          if (mat[i + 1][j] == '.') {
                                                mat[i + 1][j] = '#';
                                          }
                                    }
                              }
                        }

                        for (int i = n - 1; i > 0; i--) {
                              for (int j = 0; j < m; j++) {
                                    if (mat[i][j] == 'B') {
                                          if (mat[i - 1][j] == '.') {
                                                mat[i - 1][j] = '#';
                                          }
                                    }
                              }
                        }


                        list = new ArrayList[n * m];
                        for (int i = 0; i < n * m; i++) {
                              list[i] = new ArrayList();
                        }

                        int[][] arr = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
                        for (int i = 0; i < n; i++) {
                              for (int j = 0; j < m; j++) {
                                    if (mat[i][j] != '#')
                                          for (int k = 0; k < 4; k++) {
                                                int x = i + arr[k][0];
                                                int y = j + arr[k][1];
                                                if (x >= 0 && y >= 0 && x < n && y < m && mat[x][y] != '#') {
                                                      list[i * m + j].add(x * m + y);
                                                      list[x * m + y].add(i * m + j);
                                                }
                                          }
                              }
                        }

                        int dis[] = new int[n * m];
                        Arrays.fill(dis, -1);
                        dis[n * m - 1] = 0;
                        ArrayDeque<Integer> dq = new ArrayDeque();
                        dq.add(n * m - 1);

                        while (!dq.isEmpty()) {
                              int u = dq.poll();
                              for (int v : list[u]) {
                                    if (dis[v] == -1) {
                                          dis[v] = dis[u] + 1;
                                          dq.addLast(v);
                                    }
                              }
                        }

                        for (int i = 0; i < n * m; i++) {
                              int x = i / m;
                              int y = i % m;
                              if (mat[x][y] == 'B' && dis[i] != -1) {
                                    out.printLine("No");
                                    continue abc;
                              } else if (mat[x][y] == 'G' && dis[i] == -1) {
                                    out.printLine("No");
                                    continue abc;
                              }
                        }

                        out.printLine("Yes");


                  }
            }

      }

      static class InputReader {
            private InputStream stream;
            private byte[] buf = new byte[1024];
            private int curChar;
            private int numChars;

            public InputReader(InputStream stream) {
                  this.stream = stream;
            }

            public int read() {
                  if (numChars == -1)
                        throw new InputMismatchException();

                  if (curChar >= numChars) {
                        curChar = 0;
                        try {
                              numChars = stream.read(buf);
                        } catch (IOException e) {
                              throw new InputMismatchException();
                        }
                        if (numChars <= 0)
                              return -1;
                  }

                  return buf[curChar++];
            }

            public int nextInt() {
                  int c = read();

                  while (isSpaceChar(c))
                        c = read();

                  int sgn = 1;

                  if (c == '-') {
                        sgn = -1;
                        c = read();
                  }

                  int res = 0;

                  do {
                        if (c < '0' || c > '9')
                              throw new InputMismatchException();

                        res *= 10;
                        res += c & 15;

                        c = read();
                  } while (!isSpaceChar(c));

                  return res * sgn;
            }

            public String next() {
                  int c = read();

                  while (isSpaceChar(c))
                        c = read();

                  StringBuilder res = new StringBuilder();

                  do {
                        res.appendCodePoint(c);

                        c = read();
                  } while (!isSpaceChar(c));

                  return res.toString();
            }

            public boolean isSpaceChar(int c) {
                  return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
            }

      }

      static class OutputWriter {
            private final PrintWriter writer;

            public OutputWriter(OutputStream outputStream) {
                  writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
            }

            public OutputWriter(Writer writer) {
                  this.writer = new PrintWriter(writer);
            }

            public void print(Object... objects) {
                  for (int i = 0; i < objects.length; i++) {
                        if (i != 0) {
                              writer.print(' ');
                        }
                        writer.print(objects[i]);
                  }
            }

            public void printLine(Object... objects) {
                  print(objects);
                  writer.println();
            }

            public void close() {
                  writer.close();
            }

      }
}

